首页 > 其他分享 >springMvc32-原生apiSpring MVC过滤器-HiddenHttpMethodFilter

springMvc32-原生apiSpring MVC过滤器-HiddenHttpMethodFilter

时间:2022-08-20 22:16:03浏览次数:111  
标签:web HiddenHttpMethodFilter GET springMvc32 表单 MVC PUT method

浏览器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中的一个。

标签:web,HiddenHttpMethodFilter,GET,springMvc32,表单,MVC,PUT,method
From: https://www.cnblogs.com/yao-655442/p/16608817.html

相关文章

  • springMvc33-estful的delete
    创建maven项目就不说了,需要的找我前面的博客pom.xml文件   <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins......
  • springMvc34-restful的put
    创建maven项目就不说了,需要的找我前面的博客pom.xml文件   <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins......
  • springMvc35-jstl的jar包的下载
    .我们在使用spring框架的时候导入jstl标签库需要使用到jstl的jar包,假如没有加入到eclipse的lib目录下,使用alt+/的时候不会有提示,所以我们需要把这个jar包加进来首先登......
  • springMvc36-JavaEE-JSP基础-EL表达式和JSTL标签库(Taglibs)
    EL表达式和JSTL标签库:在JSP页面代替java代码,便于编写一.EL表达式   作用:${}简化脚本表达式<%=%>   j2ee1.4以前版本需指定<%@pageisELIgnored="false......
  • springMvc38-restful的crud实现删除方式
    上图·是目录结构,本节是有问同学的,当好好总结pom.xml   <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan......
  • springMvc39-restful的crud实现增加方式
    上图·是目录结构,本节是有问同学的,当好好总结pom.xml   <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan......
  • springMvc40-restful的crud的项目原型介绍
    上图·是目录结构,本节是有问同学的,当好好总结pom.xml   <projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan......
  • Spring MVC的主要组件和工作流程
    SpringMVC的主要组件(1)前端控制器DispatcherServlet(不需要程序员开发)作用:接收请求、响应结果,相当于转发器,有了DispatcherServlet就减少了其它组件之间的耦合度。(2)处......
  • 认识mvc
    MVC设计模式MVC是Model-View-Controller的缩写,其中每个单词都有其不同的含义:Modle 代表数据存储层,是对数据表的定义和数据的增删改查;View 代表视图层,是系统前端显......
  • Taurus.MVC 微服务框架 入门开发教程:项目集成:5、统一的日志管理。
    系列目录:本系列分为项目集成、项目部署、架构演进三个方向,后续会根据情况调整文章目录。本系列第一篇:Taurus.MVCV3.0.3微服务开源框架发布:让.NET架构在大并发的演......