1. RESTful CRUD实现流程
| 参数传递形式 | RESTful风格 |
|---|---|
| /getUser?id=1 | GET /user/1 |
| /updateUser?id=1 | PUT /user/1 |
| /deleteUser?id=1 | DELETE /user/1 |
| /saveUser | POST /user/1 |
1.1. 编写HTML
页面只能发送GET/POST请求。为了实现RESTful,SpringMVC提供了一种机制:页面可以发送POST请求,通过”_method”参数设置实际要发送的请求类型,SpringMVC会根据”_method”的值转变为对应的请求进行处理
1 | <a href="/user/1">查询</a> |
1.2. 设置HiddenHttpMethodFilter(实现请求类型转变的原理)
浏览器 form 表单只支持 GET 与 POST 请求,而DELETE、PUT 等 method 并不支持,Spring3.0 添加了一个过滤器,可以将这些请求转换为标准的 http 方法,使得支持 GET、POST、PUT 与 DELETE 请求。
SpringMVC有一个内置的HiddenHttpMethodFilter,可以根据请求参数中的”_method”的值,转化为对应的请求方式,并进行处理
编辑web.xml,添加Filter1
2
3
4
5
6
7
8
9<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>
1.3. 编写Controller
1 |
|
2. HiddenHttpMethodFilter源码分析(5.1.5.RELEASE)
1 | public class HiddenHttpMethodFilter extends OncePerRequestFilter { |