浏览器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的表单进行过滤,所以在页面中必须如下设置:

    <form action="..." method="post"><input type="hidden" name="_method" value="put" />......</form>而不是使用:<form action="..." method="put">......</form>同时,HiddenHttpMethodFilter必须作用于dispatcher前,所以在web.xml中配置HiddenHttpMethodFilter时,需参照如下代码:<filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><filter-mapping><filter-name>HiddenHttpMethodFilter</filter-name><servlet-name>spring</servlet-name></filter-mapping><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:dispatcher.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>spring</servlet-name><url-pattern>*.html</url-pattern></servlet-mapping>

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

spring mvc学习(33):原生apiSpring MVC过滤器-HiddenHttpMethodFilter相关推荐

  1. Asp.Net MVC学习总结(三)——过滤器你怎么看?

    一.过滤器简介 1.1.理解什么是过滤器 1.过滤器(Filters)就是向请求处理管道中注入额外的逻辑.提供了一个简单而优雅的方式来实现横切关注点. 2.所谓的过滤器(Filters),MVC框架里 ...

  2. ASP.NET MVC 学习(一)--MVC的cshtml的介绍

    cshtml 是 MVC3 之后新增的视图文件,跟原先的 aspx 很相似. 区别主要在于二者的解释引擎不同.aspx 采用的是 WebForm Engine,而 cshtml 则是 Razor Re ...

  3. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    Spring MVC 学习总结(二)--控制器定义与@RequestMapping详解 目录 一.控制器定义 1.1.实现接口Controller定义控制器 1.2.使用注解@Controller定义 ...

  4. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)...

    Spring MVC 学习总结(九)--Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务) 目录 一.JSON 1.1.概要 1.2.使用ModelAndView ...

  5. 【Spring MVC学习】spring mvc入门示例

    之前进公司就直接使用spring mvc做项目了,并没有系统学习过,后来再回头去总结的时候发现我只是在项目中会使用,但是有关spring mvc的配置,还有注解什么的想起来会感觉很混乱,趁着这几天不忙 ...

  6. Spring MVC学习

    出处http://www.cnblogs.com/zhuxiaojie/p/4619804.html SpringMVC框架 转载请注明出处 目录 一:配置springMVC开发环境1.1.配置文件的 ...

  7. Spring MVC学习(8)—HandlerInterceptor处理器拦截器机制全解

    基于最新Spring 5.x,详细介绍了Spring MVC的HandlerInterceptor处理器拦截器机制,以及它的一系列拦截方法. 本次我们来学习Sring MVC的HandlerInter ...

  8. 【Spring MVC学习笔记 六】SpringMVC框架整合AJAX完成局部刷新

    本篇Blog介绍另一个常用的技术Ajax.虽然Ajax可以脱离SpringMVC去使用,但是SpringMVC对AJax有更好的支持 AJAX概念概述 AJAX即Asynchronous Javasc ...

  9. Spring MVC 学习笔记 对locale和theme的支持

    Spring MVC 学习笔记 对locale和theme的支持 Locale Spring MVC缺省使用AcceptHeaderLocaleResolver来根据request header中的 ...

最新文章

  1. nanoflann库
  2. null未定义_PHP的isset()、is_null、empty()使用总结
  3. 在web开发中的三个层次使用事务
  4. Windows11 发布更新 Insider Preview Build 22000.100
  5. 轻量级ORM框架Dapper应用二:使用Dapper实现CURD操作
  6. 防抖与节流方案_如何理解js的防抖与节流
  7. python实现端口扫描器_python 实现端口扫描工具
  8. EndNote毕业论文参考文献格式输出
  9. iptables 实现主机防火墙(四表五链)
  10. 迅雷磁盘缓存设置过高会影响其它网络应用软件的速度
  11. 如何避免自由软件项目中的需求变更
  12. 地理遥感专业属于计算机行业吗,遥感科学与技术专业怎么样?
  13. JSP设置Excel表格换行_如何在WPS-Excel表格中设置可爱的“温馨提示”?
  14. Java面试——数据库
  15. android 上午零点格式,Android零点一度的区别——Matrix
  16. 程序员可选择的个博客论坛网站
  17. Ubuntu 11.10 图形(图解)安装教程、基本设置、网络设置、软件源、硬件驱动
  18. MVC 音乐商店 第 10 部分: 导航和网站设计、 结论的最后更新
  19. #Python# 十进制数转换为二进制数(包含小数)
  20. php快递查询接口,一次接入顺丰、京东、申通、圆通、韵达、中通、天天、百世、邮政、EMS等主流快递公司

热门文章

  1. [译]第三章:什么是组织结构
  2. Delphi捕捉DLL执行所抛出的异常。
  3. 【EXLIBRIS】纸版书目整理 -- 大书架 上 【292 种】【327册】
  4. 原生支付url参数错误_小程序支付
  5. java javax.xml.ws_如何通过javax.xml.ws.Service进行调用
  6. 洛阳师范学院计算机科学与技术专业怎么样,2019洛阳师范学院专业排名
  7. php如何拼接数组,PHP怎么合并数组
  8. echarts 有引导线和内部文字_点、线、面构图的异同以及相互转化
  9. java 上传远程图片,java上传图片到另一台服务器上,怎么解决
  10. php动态数组的用法