3.SpringMVC_HiddenHttpMethodFilter

来源:互联网 发布:pr mac 破解补丁 编辑:程序博客网 时间:2024/06/10 22:31

1.利用REST风格URL来进行资源处理

HTTP的四种请求方式GET POST PUT DELETE分别处理查增改删操作。那么在springmvc里,HiddenHttpMethodFilter会将post请求转化为put或delete。(因为

浏览器form只支持get和post)


在web.xml中配置该过滤器

<!-- 配置HiddlenHttpMethodFilter:可以把POST请求转换为PUT或者DELETE --><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>


对应jsp页面

<form action="springmvc/testRest/1" method="post"><input type="hidden" name="_method" value="PUT"/><input type="submit" value="Test PUT"></form><br><br><form action="springmvc/testRest/1" method="post"><input type="hidden" name="_method" value="DELETE"/><input type="submit" value="Test DELETE"></form><br><br><form action="springmvc/testRest" method="post"><input type="submit" value="Test Post"></form><br><br><a href="springmvc/testRest/1">Test REST get</a><br><br><br>


处理java类

private static final String SUCCESS="success";@RequestMapping(value="/testRest/{id}",method=RequestMethod.PUT)public String testRestPUT(@PathVariable(value="id") Integer id){System.out.println("REST PUT:"+id);return SUCCESS;}@RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE)public String testRestDELETE(@PathVariable(value="id") Integer id){System.out.println("REST DELETE:"+id);return SUCCESS;}@RequestMapping(value="/testRest",method=RequestMethod.POST)public String testRestPOST(){System.out.println("REST POST:");return SUCCESS;}@RequestMapping(value="/testRest/{id}",method=RequestMethod.GET)public String testRest(@PathVariable(value="id") Integer id){System.out.println("REST GET:"+id);return SUCCESS;}


注意:在Tomcat8中,DELETE和PUT无法跳转success.jsp页面,低版本可以。通过重定向到另外Controller来解决可以。

@RequestMapping(value="/testRest/{id}",method=RequestMethod.DELETE)public String testRestDELETE(@PathVariable(value="id") Integer id){System.out.println("REST DELETE:"+id);   return "redirect:/springmvc/testMethod";}

@RequestMapping(value="/testMethod",method=RequestMethod.GET)public String testMethod(){System.out.println("testMethod");return SUCCESS;}


原创粉丝点击