SpringMVC过滤器HiddenHttpMethodFilter

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

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

    
    
            HiddenHttpMethodFilte
            org.springframework.web.filter.HiddenHttpMethodFilter
    
    
    
    
            HiddenHttpMethodFilte
            
            /*
    

2.前端表单。

    

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))。
表单页面提交信息 :

id: name: 家庭地址: 学校地址:

控制器直接获取并保存:

        @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过滤器HiddenHttpMethodFilter)