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