springMvc32-原生apiSpring MVC过滤器-HiddenHttpMethodFilter

浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器为HiddenHttpMethodFilter。

        HiddenHttpMethodFilter的父类是OncePerRequestFilter,它继承了父类的doFilterInternal方法,工作原理是将jsp页面的form表单的method属性值在doFilterInternal方法中转化为标准的Http方法,即GET,、POST、 HEAD、OPTIONS、PUT、DELETE、TRACE,然后到Controller中找到对应的方法。例如,在使用注解时我们可能会在Controller中用于@RequestMapping(value = "list", method = RequestMethod.PUT),所以如果你的表单中使用的是<form method="put">,那么这个表单会被提交到标了Method="PUT"的方法中。

        需要注意的是,由于doFilterInternal方法只对method为post的表单进行过滤,所以在页面中必须如下设置:

 
  1. <form action="..." method="post">

  2. <input type="hidden" name="_method" value="put" />

  3. ......

  4. </form>

  5. 而不是使用:

  6. <form action="..." method="put">

  7. ......

  8. </form>

  9. 同时,HiddenHttpMethodFilter必须作用于dispatcher前,所以在web.xml中配置HiddenHttpMethodFilter时,需参照如下代码:

  10. <filter>

  11. <filter-name>HiddenHttpMethodFilter</filter-name>

  12. <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>

  13. </filter>

  14. <filter-mapping>

  15. <filter-name>HiddenHttpMethodFilter</filter-name>

  16. <servlet-name>spring</servlet-name>

  17. </filter-mapping>

  18. <servlet>

  19. <servlet-name>spring</servlet-name>

  20. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

  21. <init-param>

  22. <param-name>contextConfigLocation</param-name>

  23. <param-value>classpath:dispatcher.xml</param-value>

  24. </init-param>

  25. </servlet>

  26. <servlet-mapping>

  27. <servlet-name>spring</servlet-name>

  28. <url-pattern>*.html</url-pattern>

  29. </servlet-mapping>


        同样的,作为Filter,可以在web.xml中配置HiddenHttpMethodFilter的参数,可配置的参数为methodParam,值必须为GET,、POST、 HEAD、OPTIONS、PUT、DELETE、TRACE中的一个。

posted @   前端导师歌谣  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示