DELETE方法在SSM和SpringBoot的应用
DELETE方法在SSM和SpringBoot的应用
Http
协议中,四个表示操作方式的动词GET
POST
PUT
DELETE
,他们对应四种基本操作,GET
用来获取资源,POST
用来新建资源,PUT
用来更新资源,DELETE
用来删除资源
简单的说,就是我们在访问资源时,可以通过这四个状态来表示对于资源的不同操作,这四个状态表现为我们请求的四种方式/controller/1
HTTP GET :得到id为1 的资源/controller/1
HTTP DELETE :删除id为1的资源/controller/1
HTTP PUT :更新id为1 的资源/controller/1
HTTP POST :增加id为1 的资源
在访问同一个url的时候,通过不同的请求方式,对应到不同的controller处理单元。
但是在我们项目中其实只认识post
和get
请求,delete put
都是有post
请求映射过去的,在ssm
项目和springboot
项目中有不同的处理方式。
SSM处理DELETE请求
在我们的ssm
项目中,前端的请求需要加上一个字段,名称为_method
,值为DELETE
。在后台我们需要配置hiddenHttpMethodFilter
,来将POST
请求转换为PUT
或者DELETE
请求。
代码
配置
hiddenHttpMethodFilter
1
2
3
4
5
6
7
8
9<!--配置hiddenHttpMethodFilter ,将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>准备页面代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17<form action="myController/testRest/10" method="POST">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="testPUT">
</form>
<br/>
<form action="myController/testRest/10" method="POST">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="testDELETE">
</form>
<br/>
<form action="myController/testRest/10" method="POST">
<input type="submit" value="testPOST">
</form>
<br/>
<form action="myController/testRest/10" method="GET">
<input type="submit" value="testGET">
</form>
原理
在Filter
内部会对post
方法进行一个转换。
1 | protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { |
Springboot
springboot
内部已经默认引入了HiddenHttpMethodFilter
,可在SpringBoot启动日志里看到该Filter的启动信息。我们只需要修改ajax
的type
属性为DELETE
就好了。
此文章版权归waar299所有,如有转载,请注明来自原作者!
评论