SpringMVC学习(三)-HiddenHttpMethodFilter过滤器&RequestParam注解&CookieValue注解

本文介绍了SpringMVC中如何配置和使用HiddenHttpMethodFilter,详细阐述了RequestParam注解在参数绑定上的应用,以及CookieValue注解在处理Cookie数据时的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.web.xml(配置HiddenHttpMethodFilter)

<?xml version="1.0" encoding="utf-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

    <!--  
        配置org.springframework.web.filter.HiddenHttpMethodFilter:
        把POST请求转为DELETE或POST请求
    -->
    <filter>
         <filter-name>HiddenHttpMethodFilter</filter-name>
         <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>

    <filter-mapping>
          <filter-name>HiddenHttpMethodFilter</filter-name>
          <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 配置DispatcherServlet -->
    <!-- 配置DispatcherServlet的作用是:如果在某个方法上配置了@RequestMapping("/helloworld"),
         当浏览器访问helloworld时,DispatcherServlet会将这个请求发送给@RequestMapping("/helloworld")
         所在的方法上,执行这个方法 -->
    <servlet>
        <servlet-name>SpringDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置DispatcherServlet的一个初始化参数:配置springMVC配置文件的位置和名称 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
    <!--SpringDispatcherServlet在当前web应用被加载的时候被创建,而不是等第一次请求的时候被创建  -->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>  <!-- 可以应答所有请求 -->
    </servlet-mapping>

</web-app>

2.index.jsp(CRUD操作的表单与超链接)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head> 

<body>
<form action="springmvc/testRest/1" method="POST">
    <input type="hidden"  name="_method" value="PUT"/>
    <input type="submit" value="TestRest PUT"/>
</form>
<br><br>

<form action="springmvc/testRest/1" method="POST">
    <input type="hidden"  name="_method" value="DELETE"/>
    <input type="submit" value="TestRest DELETE"/>
</form>
<br><br>

<form action="springmvc/testRest" method="POST">
    <input type="submit" value="TestRest POST"/>
</form>
<br><br>

<a href="springmvc/testRest/1">TestRest GET</a>
<br><br>





<a href="springmvc/testPathVariable/1">TestPathVariable</a>
<br><br>

<a href="springmvc/testMethod">TestMethod</a>
<br><br>

<a href="springmvc/testParamsAndHeaders?username=hello&age=10">TestParamsAndHeaders</a>
<br><br>

<a href="springmvc/testRequestMapping">TestRequestMapping</a>
<br><br>

<a href="helloworld">Hello World</a>
<br><br>

<a href="springmvc/testMethod">TestMethod</a>
<br><br>

<form action="springmvc/testMethod" method="POST">
    <input type="submit" value="submit"/>
</form>
</body>
</html>

3.SpringMVCTest.java

package com.springMVC.Helloworld;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@RequestMapping("/springmvc")
@Controller
public class SpringMVCTest {

    /*
     Rest 风格的 URL. 
          以 CRUD 为例: 
         新增: /order POST 
         修改: /order/1 PUT update?id=1 
         获取:/order/1 GET get?id=1 
         删除: /order/1 DELETE delete?id=1
         如何发送 PUT 请求和 DELETE 请求呢 ? 
    1. 需要在web.xml文件中配置 HiddenHttpMethodFilter 
     <!-- 
            配置 org.springframework.web.filter.HiddenHttpMethodFilter: 可以把 POST 请求转为 DELETE 或 POST 请求 
      -->:
    */
    @RequestMapping(value="/testRest/{id}",method=RequestMethod.PUT)
    public String testRestPut(@PathVariable Integer id) {
        System.out.println("testRestPut"+id);
        return "success";
    }

    @RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE)
    public String testRestDelete(@PathVariable Integer id) {
        System.out.println("testRestDelete"+id);
        return "success";
    }

    @RequestMapping(value="/testRest",method=RequestMethod.POST)
    public String testRest() {
        System.out.println("testRestPost");
        return "success";
    }

    @RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)
    public String testRest(@PathVariable Integer id) {
        System.out.println("testResGet"+id);
        return "success";
    }


}

RequestParam注解:

@RequestMapping("/testRequestParam")
    public String testRequestParam(@RequestParam(value="username") String un,@RequestParam(value="age",required=false,defaultValue="0") int age) {
        System.out.println("testRequestParam: username" +un+" age"+age);
        return "success";
    }

CookieValue注解

/*
     * @CookieValue映射一个Cook值
     */
    @RequestMapping("testCookieValue")
    public String testCookieValue(@CookieValue("JSESSIONID") String sessionId) {

        System.out.println("testCookieValue:sessionId "+sessionId);
        return "success";
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值