HiddenHttpMethodFilter进行请求过滤,实现REST风格的URL

 

         Rest 风格的URL. 
         以 CRUD 为例: 
         新增: /order     POST 
         修改: /order/1   PUT update?id=1 
         获取:/order/1    GET get?id=1 
         删除: /order/1   DELETE delete?id=1、

浏览器只支持Post和get的方式,想要实现delete和put的方式,需要使用过滤器HiddenHttpMethodFilter

1,配置过滤器

<filter> 
    <filter-name>hidden</filter-name> 
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> 
<filter-mapping> 
    <filter-name>hidden</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping>

 

2,在客户端发起请求

过滤器使用_method的这个参数来决定过滤成是什么类型的,因此,需要在前端的提交表单里面加上_method的隐藏域,注意要使用post方法进行提交

 

 <form action="/rest/12" method="post">
    <input type="hidden" name="_method" value="DELETE">
    <input type="submit" value="delete">
  </form>
  <form action="/rest/12" method="post">
    <input type="hidden" name="_method" value="PUT">
    <input type="submit" value="put">
  </form>
  <form action="/rest/12" method="post">
    <input type="submit" value="post">
  </form>
  <form action="/rest/12" method="get">
    <input type="submit" value="get">
  </form>

 

3,后端控制器的编写

控制器直接使用RequestMapping来指定方法就可以了

 

@RequestMapping(value = "/rest/{id}",method = RequestMethod.DELETE)
    public String testrestDELETE(@PathVariable int id, Model model){
        model.addAttribute("msg","delete请求"+id);
        return SUCCESS;
    }
    @RequestMapping(value = "/rest/{id}",method = RequestMethod.PUT)
    public String testrestPUT(@PathVariable int id,Model model){
        model.addAttribute("msg","put请求"+id);
        return SUCCESS;
    }
    @RequestMapping(value = "/rest/{id}",method = RequestMethod.POST)
    public String testrestPOST(@PathVariable int id,Model model){
        model.addAttribute("msg","post请求"+id);
        return  SUCCESS;

    }
    @RequestMapping(value = "/rest/{id}",method = RequestMethod.GET)
    public String testrestDELETE(@PathVariable int id, ModelMap modelMap){
        modelMap.addAttribute("msg","get请求"+id);
        return SUCCESS;
    }

 

特别注意!!!

在Tomcat 8上面是不支持delete和post请求的,因此以上只能在Tomcat 7上面执行

Tomcat 8运行时可以进入到相应的控制器,但是视图渲染返回的时候,由于不支持这两种方法,就会报出异常页面

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值