RESTful架构
REST,即Representational State Transfer的缩写,表现层状态转化
*资源
网络上的一个实体,文本,图片,MP3文件,可以使用URI进行定位,每个资源独有一个URI,上网就是
URI定位资源的过程
* 表现层
资源的表现形式,比如文本文件使用txt格式表示等等。
严格来说URI应该代表资源的实体,不代表他的形式,网址用.html结尾作为后缀,是不必要的,这是表现层的范畴
具体表现形式应在http的请求头信息中accept和content-type指定。
* 状态转换
http协议是无状态协议,如果客户端需要操作服务器,必须通过某种手段,让服务端发生"状态转化"。这个转换是建立在
表现层之上的,就是"表现层状态转化"
客户端用到的手段是http协议,http协议里面表示操作方式的词语:
GET:获取资源
POST:新建资源
PUT:更新资源
DELETE:删除资源
总结,RESTful架构
* 每个URI代表一种资源
* 客户端和服务端传递的是资源的表现层
* 客户端通过4个http动词操作服务器资源
举个例说明:
传统方式操作资源
http://127.0.0.1/item/queryItem.action?id=1 查询,GET
http://127.0.0.1/item/saveItem.action 新增,POST
http://127.0.0.1/item/updateItem.action 更新,POST
http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST
使用RESTful操作资源
http://127.0.0.1/item/1 查询,GET
http://127.0.0.1/item 新增,POST
http://127.0.0.1/item 更新,PUT
http://127.0.0.1/item/1 删除,DELETE
GET,POST 请求参数,经常遇到,但是PUT、DELETE发送请求,需要注意。
tomcat默认解析post请求,PUT、DELETE请求方式默认不支持,修改tomcat的server.xml加上
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
parseBodyMethods="POST,PUT,DELETE"
URIEncoding="UTF-8" />
SpringMVC RESTful开发
使用RESTful开发商品查询
<script type="text/javascript">
$("#btn").live('click',function(){
$.ajax({
type:'post',
url:contentpath+'/item/'+$("#btnValue").val()+'.action',
contentType:"application/x-www-form-urlencoded;charset=utf-8",
dataType:'json',
success:function(data){
console.log(data);
},
error:function(){
alert('服务器连接失败,请重试!');
}
});
});
</script>
<input id="btnValue" type="text"> <input id="btn" type="button" value="RESTful提交">
controller方法
@RequestMapping("/{id}.action")
public @ResponseBody Item queryItemInfoById(@PathVariable Integer id){
Item item = new Item();
item.setId(1001);
item.setName("华为");
item.setTime(new Date());
item.setRemark("....");
return item;
}
SpringMVC拦截路径说明
SpringMVC的前端控制器对符合匹配规则的URI进行拦截,常见的如下
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springMVC.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<!-- /* 拦截所有,jsp,png,js,css...
*.action 拦截匹配的URI
/ 不会拦截jsp页面,但是会拦截静态资源 ****推荐****
需要在SpringMVC.xml加上放行的路径
-->
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
配置为/,对于静态资源的处理方法:
1. 在SpringMVC.xml中加上静态资源放行
<!-- 配置静态资源处理 必须文件位于webapp根目录下-->
<mvc:resources location="/js/**" mapping="/js/"/>
<mvc:resources location="/images/**" mapping="/images/"/>
<mvc:resources location="/css/**" mapping="/css/"/>
2. 启用tomcat的defaultservlet处理,需要将配置放在dispatcherServlet前面
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
转载:http://www.ruanyifeng.com/blog/2011/09/restful.html
https://blog.csdn.net/u012730299/article/details/51872704