RESTful架構,就是目前流行的1種互聯網軟件架構。它結構清晰、符合標準、易于理解、擴大方便,所以正得到愈來愈多網站的采取。RESTful架構對url進行規范,寫RESTful格式的url是甚么模樣的呢?我們1般要求的url是類似這模樣的:
http://...../xxx.action?id=001&type=aaa
而REST的url風格是甚么模樣呢?1般它類似于:
http://..../xxx/001
所以REST有個很明顯的特點:使url變得簡潔,將參數通過url傳到服務端。springmvc也是支持這類REST風格的url的,我們定義1個controller來測試1下:
//查詢商品信息,輸出json,使用RESTful
@RequestMapping("/itemsView/{id}")
public @ResponseBody ItemsCustom itemsView(@PathVariable("id") Integer id) throws Exception {
ItemsCustom itemsCustom = itemsService.findItemsById(id);
return itemsCustom;
}
@ResponseBody是用來將itemsCustom轉成json的注解,而@PathVariable注解則是跟REST有關了,@RequestMapping(value=”/ itemsView/{id}”)中的{id}表示1個占位符,那末這里面傳過來的值會傳到被@PathVariable標記的形參上,如果形參和占位符中的變量1樣的話,可以不用再注解中指定,否則注解中要指定這個占位符中的變量(即id)。這樣的話,參數就能夠通過url傳到形參中來了。
但是這樣還不行,還要在前端控制器中針對REST進行配置,以下:
<!-- 配置springmvc的前端控制器DispatcherServlet,REST配置 -->
<servlet>
<servlet-name>springmvc_rest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc_rest</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
攔截的是所有的url(/),這個配置跟之前配置好的前端控制器是沒有沖突的,可以并存。經過這樣配置后,就能夠在閱讀器中輸入http://localhost:8080/SpringMVC_Study/itemsView/1來測試返回到閱讀器的數據了,可以看到返回1串json數據。
但是有個問題,使用上面的配置后會攔截所有的url,那末對靜態資源也會攔截,所以DispatcherServlet也會解析靜態資源,但是這樣的話就會出錯,所以我們要設置1下不讓它解析靜態資源。如:
<!-- 靜態資源解析,包括js,css,img... -->
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
<mvc:resources location="/img/" mapping="/img/**"></mvc:resources>
如果還有其他靜態資源的話,也要設置1下,這樣就不會去解析靜態資源了,訪問靜態資源的時候就直接訪問便可。
相干瀏覽:http://blog.csdn.net/column/details/spring-mvc.html
學習筆記源碼下載地址:https://github.com/eson15/SpringMVC_Study
—–樂于分享,共同進步!
—–我的博客主頁:http://blog.csdn.net/eson_15