SpringMVC(五)RESTful支援,Dispatcher常見的攔截路徑
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
相關文章
- SpringMVC【校驗器、統一處理異常、RESTful、攔截器】SpringMVCREST
- SpringMVC攔截器SpringMVC
- SpringMVC攔截器,設定不攔截的URLSpringMVC
- SpringMVC中的攔截器SpringMVC
- SpringMVC-攔截器SpringMVC
- 【SpringMVC】 4.3 攔截器SpringMVC
- SpringMvc-10.14上傳、攔截器、異常處理SpringMVC
- SpringMVC攔截器的使用場景SpringMVC
- SpringMVC中的攔截器Interceptor實現SpringMVC
- 【SpringMVC】檔案上傳與下載、攔截器、異常處理器SpringMVC
- Springmvc mvc:exclude-mapping不攔截 無效SpringMVCAPP
- C#常見的檔案路徑ApiC#API
- Java常見異常彙總 這些“攔路虎”你遇見了嗎?Java
- Spring-全域性異常攔截Spring
- Java Filter過濾器(攔截路徑的配置+攔截方式的配置+生命週期+多個過濾器的先後執行順序)JavaFilter過濾器
- Asp.Netcore使用Filter來實現介面的全域性異常攔截,以及前置攔截和後置攔截ASP.NETNetCoreFilter
- SpringMVC常見面試題SpringMVC面試題
- RESTful設計中的常見疑問REST
- SpringMVC:RESTful案例SpringMVCREST
- 攔截線上 sql 異常報錯SQL
- springboot 全域性異常攔截器,友好異常提示Spring Boot
- SpringMVC(六) 攔截器和使用者登入校驗SpringMVC
- Spring MVC 中的攔截器的使用“攔截器基本配置” 和 “攔截器高階配置”SpringMVC
- eclipse用Maven構建SpringMVC環境報錯找不到springmvc包下的Dispatcher類EclipseMavenSpringMVC
- Proxy 攔截
- Android小知識-剖析OkHttp中的五個攔截器(中篇)AndroidHTTP
- Android小知識-剖析OkHttp中的五個攔截器(上篇)AndroidHTTP
- Android小知識-剖析OkHttp中的五個攔截器(下篇)AndroidHTTP
- 前端架構之vue+axios 前端實現登入攔截(路由攔截、http攔截)前端架構VueiOS路由HTTP
- dubbo~全域性異常攔截器的使用與設計缺陷
- SpringMVC(2)- 非同步呼叫、非同步請求-跨域訪問、攔截器、異常處理、實用技術SpringMVC非同步跨域
- grpc中的攔截器RPC
- axios 攔截器iOS
- spring攔截器Spring
- axios攔截器iOS
- sql攔截器SQL
- 導彈攔截
- Mybatis 攔截器MyBatis