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

特别注意!!!!!!!!!!!!!

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

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

时间: 2024-08-10 17:01:41

HiddenHttpMethodFilter进行请求过滤,实现Rest风格的url的相关文章

springMVC的rest风格的url请求

rest是一个架构风格,用url来访问网络上的任何资源.rest的一种思想就是用http中的动作get,post,put,delete,来进行增删改查. 这里介绍的是springMVC的rest请求. 不包含webservice的JAX-RS的例子.rest风格的webservice可以用cxf框架进行实现.也很简单. 1 首先准备web项目需要的jar包,也就是springMVC所依赖的jar: 2 创建一个动态的web工程:这里首先需要配置web.xml文件注册springMVC的前端控制器

Spring MVC 使用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 如何发送 PUT 请求和 DELETE 请求呢 ? 1. 需要在web.xml文件中配置 HiddenHttpMethodFilter <!-- 配置 org.springframework.web.filter.HiddenHttpMe

利用java servlet实现简单的web请求过滤和跳转

今日有两个微信web项目合并了,但是还有些链接指向废弃的项目,另外不想在服务器上运行两份相同web项目(1.影响性能.2.维护升级容易出错),因此决定写一个简单链接跳转的项目,spring的filter过滤器可以实现,但想想spring干这个有点大材小用,想到java的servlet可以支持通配符,因此用servlet写了一个简单的跳转程序,总共花了不到一小时的时间.废话少说上代码: 1 /** 2 * Servlet implementation class Default 3 */ 4 @W

让Servlet支持REST风格的url

前言 Servlet自从上了3.0版本之后,用起来已经是相当舒服了.注解的加入,让你基本可以抛弃web.xml,零配置写web. 不过,用了之后,还是有些遗憾.就是REST风格URL的支持.很久之前用过SpringMVC之后,对于REST风格的URL就喜欢得不得了.上网查了下,发现了个项目servletrest,项目托管在google code上:http://code.google.com/p/servletrest/ 源码就几个类,很快就看完了,也试用了一下.确实是可以支持,但是bug也比较

Spring Cloud入门教程 - Zuul实现API网关和请求过滤

简介 Zuul是Spring Cloud提供的api网关和过滤组件,它提供如下功能: 认证 过滤 压力测试 Canary测试 动态路由 服务迁移 负载均衡 安全 静态请求处理 动态流量管理 在本教程中,我们将用zuul,把web端的请求/product转发到对应的产品服务上,并且定义一个pre过滤器来验证是否经过了zuul的转发. 基础环境 JDK 1.8 Maven 3.3.9 IntelliJ 2018.1 Git 项目源码 Gitee码云 创建Zuul服务 在IntelliJ中创建一个ma

fiddler filters 使用(fiddler只显示指定请求,fiddler不显示指定请求,即filter请求过滤)

转自:http://blog.csdn.net/notejs/article/details/49681479 Fiddler 有一个filters可以很好的帮助我们只显示我们关系的请求或者隐藏掉我们不关心的请求.这在开发中是非常有用的,尤其是你在这边想看请求,那边有程序或者网站在自动频繁发送求情,真的很烦.回想一下买票插件,是不是会在不停的刷,你在fiddler看东西就会很烦. 另外就是使用fiddler的时候我们几乎不会关心js和css请求,现在js越来越多的模块化了,在开发模式下往往会加载

SpringMVC操作指南-登录功能与请求过滤

[1] Source http://code.taobao.org/p/LearningJavaEE/src/LearningSpringMVC005%20-%20Login%20and%20Filter/

3、REST风格的URL

1.概述 HTTP协议里面,四个表示操作方式的动词:GET.POST.PUT.DELETE,它们分别对应四种基本的操作,GET用来获取资源,POST用来新建资源,PUT用来更新资源,DELETE用来删除资源.        示例:    —— /order/1        HTTP GET:得到id=1的order    —— /order/1     HTTP DELETE:删除id=1的order    —— /order/1     HTTP PUT:更新id=1的order    ——

程序ajax请求公共组件app-jquery-http.js中url参数部分的项目应用

结合微信登录以及微信支付的案例:= =||| (案例比较奇葩复杂) 简述项目流程: 1.获取用于公众号支付的openid(公众平台):在微信内置浏览器中打开网页链接,刚进入页面就通过微信公众平台获取该微信用户的code,拿到code传给后台,换取用户的openid. 2.微信登录(开放平台):微信登录通过微信开放平台,由于第一步公众平台拿到的code会混淆开放平台的code,导致用户使用微信登录失败,就需要使用该插件将url参数重置. 3.微信支付(公众平台):像后台传输步骤一获取的openid