SpringMVC过滤器HiddenHttpMethodFilter

一般来说,资源操有查询,新增,删除,更改四种类型,对应HTTP协议中四类请求:GET,POST,DELETE,PUT。
未声明情况下浏览器默认使用GET提交请求。
需要注意的是,普通浏览器只支持GET,POST方式 ,其他请求方式如DELETE|PUT必须通过过滤器的支持才能实现。
Spring自带了一个过滤器HiddenHttpMethodFilter,支持GET、POST、PUT、DELETE请求。
使用方法很简单,下面展示通用流程的部分代码:

1.在web.xml中增加过滤器。

 <!-- 增加HiddenHttpMethodFilte过滤器:给普通浏览器增加 put|delete请求方式 -->
    <filter>
        <filter-name>httpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>httpMethodFilter</filter-name>
        <servlet-name>hrp</servlet-name>
    </filter-mapping>

jsp

<form action="handler/testRest/1234" method="post">
        <input type="hidden"  name="_method" value="DELETE"/>
        <input type="submit" value="删">
    </form>

method必须是POST,然后设置隐藏域的value值(DELETE|PUT)。

controller

 @RequestMapping(value="testRest/{id}",method=RequestMethod.DELETE)
        public String  testDelete(@PathVariable("id") Integer id) {
            System.out.println("delete:删 " +id);
            //Service层省略
            return "success" ;
        }

当映射名相同时@RequestMapping(value="testRest),通过指定method=RequestMethod.xx可以处理不同的请求(xx为GET,POST,DELETE,PUT)。

以上就是HiddenHttpMethodFilter的基本使用。

PS:
1.实体类和form表单参数一致时,使用SpringMVC可以轻松把信息传入并保存(支持级联属性)。
比如有一个Student类(成员变量id,name,addrss(homeAddress、schoolAddress))。
表单页面提交信息 :

<form action="handler/testObjectProperties" method="post">
    id:<input name="id" type="text" />
    name:<input name="name" type="text" />
    家庭地址:<input name="address.homeAddress" type="text" />
    学校地址:<input name="address.schoolAddress" type="text" />
    <input type="submit" value="查">
</form>

控制器直接获取并保存:
@RequestMapping(value=“testObjectProperties”)
public String testObjectProperties(Student student) {
System.out.println(student.getId()+","+student.getName()+","+student.getAddress().getHomeAddress()+","+student.getAddress().getSchoolAddress());
return “success” ;
}

2.在SpringMVC中使用原生态的Servlet API :HttpServletRequest :直接将 servlet-api中的类、接口等写在springMVC所映射的方法参数中即可。

 @RequestMapping(value="testServletAPI")
        public String testServletAPI(HttpServletRequest  request,HttpServletResponse response) {
            //request.getParameter("uname") ;不用再新建保存了
            System.out.println(request);
            return "success" ;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值