Springmvc對restful的支持

Restful架構,就是目前 流行的一種互聯網架構。他結構清晰,符合標準,已於理解,擴展方便,所以正得到越來越多網站的採用。Restful架構對url進行規範,寫restful格式的url是怎麼樣子呢》我們一般請求的url是類似 這樣子的:

http://...../xxx.action?id=001&type=aaa 

而rest的url的風格是什麼樣子的呢?一般他類似於:http://..../xxx/001 

所以REST有個很明顯的特點:使url變得簡潔 ,將參數通過url傳到服務器,springmvc也是支持這種REST風格的url的,我們定義一個controller來測試一下:

//查詢商品信息,輸出json。使用RESTful。

@RequestMapping("/itemView/{id}")

public @ResponseBody ItemCustom itemView(@PathVariable(“id”) Integer id) throwException{

ItemsCustom itemsCustom = itemsService.findItemsById(id);
    return itemsCustom;

}

@ResponseBody是用來將itemsCustom轉成json註解的,而@PathVariable註解則是跟REST有關了。

@RequestMapping(value="/itemView/{id}")中的{id}表示一個佔位符,那麼這裏面傳過來的值會被傳到@PathVariable編輯的形參

,如果形參和佔位符中的變量是一樣的話,可以不用再註解中的指定了。否則註解中要指定這個佔位符 中的變量(即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/SpringMVV_studyView/1 來測試返回到瀏覽器的數據了。樂意看到返回遺傳json數據。

但是有個問題,使用上面的配置後悔攔截所有的url.那麼對靜態資源也會攔截。所以DispatcherServlet也會解析靜態資源,但是這樣的話就會出錯,所以我們要設置一下不讓解析靜態資源springmvc.xml.如;

<!-- 靜態資源解析,包括js,css,img... -->
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
<mvc:resources location="/img/" mapping="/img/**"></mvc:resources>

如果還有其他靜態資源的話,也要設置一下,這樣就不會去解析靜態資源呢了,訪問靜態資源的時候就可以直接訪問。

 

這裏是我轉載的 https://www.cnblogs.com/shanheyongmu/p/5882125.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章