本文介紹RESTful的概念,並通過一個小例子展示如何編寫RESTful風格的controller和配置前端控制器,最後展示靜態資源的解析
RESTful架構,就是目前最流行的一種互聯網軟件架構。它結構清晰、符合標准、易於理解、擴展方便,所以正得到越來越多網站的采用。
RESTful(即Representational State Transfer的縮寫)其實是一個開發理念,是對http的很好的诠釋。
1.對url進行規范,寫RESTful格式的url
非REST的url:http://...../queryItems.action?id=001&type=T01
REST的url風格:http://..../items/001
特點:url簡潔,將參數通過url傳到服務端
2.http的方法規范
不管是刪除、添加、更新,等等。使用url是一致的,如果進行刪除,需要設置http的方法為delete,其他同理。
後台controller方法:判斷http方法,如果是delete執行刪除,如果是post執行添加。
3.對http的contentType規范
請求時指定contentType,要json數據,設置成json格式的type。
查詢商品信息,返回json數據。
定義方法,進行url映射使用REST風格的url,將查詢商品信息的id傳入controller .
輸出json使用@ResponseBody
將java對象輸出json。
//查詢商品信息,輸出json
//itemsView/{id}裡邊的{id}表示占位符,通過@PathVariable獲取占位符中的參數,
//@PathVariable中名稱要和占位符一致,形參名無需和其一致
//如果占位符中的名稱和形參名一致,在@PathVariable可以不指定名稱
@RequestMapping("/itemsView/{id}")
public @ResponseBody ItemsCustom itemsView(@PathVariable("id") Integer items_id)throws Exception{
//調用service查詢商品信息
ItemsCustom itemsCustom = itemsService.findItemsById(items_id);
return itemsCustom;
}
@RequestMapping(value="/ itemsView/{id}")
:{×××}
占位符,請求的URL可以是/viewItems/1
或/viewItems/2
,通過在方法中使用@PathVariable
獲取{×××}中的×××變量。@PathVariable
用於將請求URL中的模板變量映射到功能處理方法的參數上。
如果@RequestMapping
中表示為/itemsView/{id}
,id和形參名稱一致,@PathVariable
不用指定名稱。
springmvc_rest
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring/springmvc.xml
springmvc_rest
/
訪問結果如圖:
配置前端控制器的url-parttern中指定/
,對靜態資源的解析會出現問題,報404錯誤。
在springmvc.xml中添加靜態資源解析方法。
這時訪問http://localhost:8080/ssm1/js/jquery-1.4.4.min.js
,可以在浏覽器中看到js的內容