1、在表单中加入一个隐藏的参数: _method , 值是 DELETE (或者PUT)
<form action="springmvc/testRest/a1we2!3#d" method="post"> <input type="hidden" name="_method" value="DELETE"></input> <input type="submit" value="test Rest delete"></input> </form>
2、 发送的POST 请求, 配置一个 HiddenHttpMethodFilter 过滤器:
<filter> <filter-name>HiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>HiddenHttpMethodFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
该过滤器会把 获取 String paramValue = request.getParameter("_method");
paramValue 值是 DELETE , 然后把该POST 的 HTTP请求的 改成 DELETE 请求。
3、在Controller 中匹配,获取上面的 DETELE 请求
@RequestMapping(value="/testRest/{ss}", method=RequestMethod.DELETE) public String testRestDelete(@PathVariable("ss") String sid) { System.out.println("test DELETE: " + sid); return SUCCESS; }
输出: test DELETE: a1we2!3
点了 test Rest delete 这个按钮后,请求的url 是 http://localhost:8080/springmvc-1/springmvc/testRest/a1we2!3#d , 在springmvc 中通过 PathVariable 注解获取 REST风格的URL 中的参数,获取的时候 ss 值是 a1we2!3 , 保存到 sid 中。 (把 # 后面的内容去掉了)