SpringMVC_[5]使用RESTful风格的更新和删除遇到的问题

Posted 奔跑的路奇

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC_[5]使用RESTful风格的更新和删除遇到的问题相关的知识,希望对你有一定的参考价值。

1 使用RESTful风格更新和删除遇到的问题

1.1 遇到的问题

使用Ajax时,采用Restful风格PUT和DELETE请求传递参数无效,传递到后台的参数值为null

1.2 产生的原因

Tomcat封装请求参数的过程:
	 1.将请求体中的数据,封装成一个map
	 2.request.getParameter(key)会从这个map中取值 
	 3.SpringMvc封装POJO对象的时候,会把POJO中每个属性的值进行request.getParamter(); 
	   AJAX发送PU或者DELETE请求时,请求体中的数据通过request.getParamter()拿不到。 
	   Tomcat一检测到是PUT或者DELETE就不会封装请求体中的数据为map,只有POST形式的请求才封装请求为 map。
	 

1.3 解决方案

1:前端页面中的ajax发送请求的时候在url中加 &_method=”PUT” 或者 &_method=”DELETE” 即可
如图:
在这里插入图片描述

2:web.xml中配置

<!-- 使用Rest风格的URI 将页面普通的post请求转为指定的delete或者put请求 
	原理:在Aajx中发送post请求后,带_method参数,将其修改为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>

2 拓展:HTTP状态码

客户端的用户发起的每一次请求,服务器都必须给出响应。响应包括 HTTP 状态码和数据两部分。
HTTP 状态码就是一个三位数,分成五个类别

五类状态码分别如下: 
	1xx:相关信息 
	2xx:操作成功 
	3xx:重定向 
	4xx:客户端错误 
	5xx:服务器错误 

状态码2xx

200 状态码表示操作成功,但是不同的方法可以返回更精确的状态码。

GET: 200 OK 表示一切正常 
POST: 201 Created 表示新的资源已经成功创建 
PUT: 200 OK 
PATCH: 200 OK 
DELETE: 204 No Content 表示资源已经成功删除

状态码3xx

304 : Not Modified 客户端使用缓存数据

状态码4xx

4xx 状态码表示客户端错误。

400 Bad Request:服务器不理解客户端的请求,未做任何处理。 
401 Unauthorized:用户未提供身份验证凭据,或者没有通过身份验证。 
403 Forbidden:用户通过了身份验证,但是不具有访问资源所需的权限。 
404 Not Found:所请求的资源不存在,或不可用。

状态码5xx
5xx 状态码表示服务端错误。一般来说,API 不会向用户透露服务器的详细信息,所以只要两个状态码就够了。

500 Internal Server Error:客户端请求有效,服务器处理时发生了意外。 
503 Service Unavailable:服务器无法处理请求,一般用于网站维护状态。

最后,如果有问题,希望指正,一起进步。

以上是关于SpringMVC_[5]使用RESTful风格的更新和删除遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章

SpringMVC--11 Restful开发风格

SpringMVC--11 Restful开发风格

SpringMVC--11 Restful开发风格

SpringMVC掌握RESTful风格及其使用,完成案例

springmvc 学习 RestFul 风格

springMVC框架 学习Restful风格 详解