springmvc-5,HiddenHttpMethodFilter过滤器的作用

来源:互联网 发布:决战武林进阶数据地煞 编辑:程序博客网 时间:2024/04/29 10:13

REST

REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。

简单具体的例子就是在http协议里面,GET,POST,PUT,SELETE这个四个动词对应基本的 操作,GET标识获取资源,POST表示新建资源,PUT表示更新资源,DELETE表示删除资源。

例如:
/order/1 HTTP GET请求表示删除id为1的订单

/order HTTP POST请求表示新创建一个订单

/order/1 HTTP PUT请求表示更新id为1的订单

/order/1 HTTP DELETE请求表示删除id为1的订单

HiddenHttpMethodFilter

对于REST风格的URL来说,问题在于如何发送PUT和DELETE请求,form表单支持GET和POST的请求,在springmvc里可以通过HiddenHttpMethodFilter将一个POST请求转换为PUT或者DELETE请求

使用HiddenHttpMethodFilter

  1. 首先在web.xml文件中添加HiddenHttpMethodFilter过滤器

  2. 发送一个POST请求,并且包含一个隐藏域,name=_method,value为PUT或者DELETE

例如:

/**     * 对应REST的风格URL的一组CRUD处理器     */    @RequestMapping(value = "/testRESTGET/{id}", method = RequestMethod.GET)    public String testRESTGET(@PathVariable("id") Integer id) {        System.out.println("testREST GET:" + id);        return "success";    }    @RequestMapping(value = "/testRESTPOST", method = RequestMethod.POST)    public String testRESTPOST() {        System.out.println("testREST POST:");        return "success";    }    @RequestMapping(value = "/testRESTPUT/{id}", method = RequestMethod.PUT)    public String testRESTPUT(@PathVariable("id") Integer id) {        System.out.println("testREST PUT:" + id);        return "success";    }    @RequestMapping(value = "/testRESTDELETE/{id}", method = RequestMethod.DELETE)    public String testRESTDELET(@PathVariable("id") Integer id) {        System.out.println("testREST DELETE:" + id);        return "success";    }

访问这些的表单:

<a href="AAA//testRESTGET/1">testRESTGET </a>    <br />    <br />    <form action="AAA//testRESTPOST" method="post">        <input type="submit" value="testRESTPOST" />    </form>    <br />    <br />    <form action="AAA//testRESTPUT/1" method="post">        <input type="hidden" name="_method" value="PUT"> <input            type="submit" value="testRESTPUT" />    </form>    <br />    <br />    <form action="AAA//testRESTDELETE/1" method="post">        <input type="hidden" name="_method" value="DELETE"> <input            type="submit" value="testRESTDELETE" />    </form>

所以说呢,HiddenHttpMethodFilter这个过滤器的主要作用就是,将浏览器传过来的请求转换为PUT或者DELETE

0 0
原创粉丝点击