美文网首页
SpringMVC过滤器HiddenHttpMethodFilt

SpringMVC过滤器HiddenHttpMethodFilt

作者: 花无缺_0159 | 来源:发表于2019-03-03 10:50 被阅读0次

一般来说,资源操有查询,新增,删除,更改四种类型,对应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>HiddenHttpMethodFilte</filter-name>
            <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    
    </filter>
    
    <filter-mapping>
            <filter-name>HiddenHttpMethodFilte</filter-name>
            <!-- 过滤所有:/*-->
            <url-pattern>/*</url-pattern>
    </filter-mapping>

2.前端表单。

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

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

3.控制器。

    @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" ;
        }

相关文章

网友评论

      本文标题:SpringMVC过滤器HiddenHttpMethodFilt

      本文链接:https://www.haomeiwen.com/subject/uuxbyqtx.html