淺談SpringMVC對(duì)RESTfull的支持
本文研究的主要是SpringMVC對(duì)RESTfull的支持的相關(guān)內(nèi)容,具體如下。
RESTful架構(gòu),就是目前流行的一種互聯(lián)網(wǎng)軟件架構(gòu)。它結(jié)構(gòu)清晰、符合標(biāo)準(zhǔn)、易于理解、擴(kuò)展方便,所以正得到越來(lái)越多網(wǎng)站的采用。RESTful架構(gòu)對(duì)url進(jìn)行規(guī)范,寫(xiě)RESTful格式的url是什么樣子的呢?我們一般請(qǐng)求的url是類似這樣子的:
http://...../xxx.action?id=001&type=aaa
而REST的url風(fēng)格是什么樣子呢?一般它類似于:
http://..../xxx/001
所以REST有個(gè)很明顯的特點(diǎn):使url變得簡(jiǎn)潔,將參數(shù)通過(guò)url傳到服務(wù)端。springmvc也是支持這種REST風(fēng)格的url的,我們定義一個(gè)controller來(lái)測(cè)試一下:
//查詢商品信息,輸出json,使用RESTful
@RequestMapping("/itemsView/{id}")
public @ResponseBody ItemsCustom itemsView(@PathVariable("id") Integer id) throws Exception {
ItemsCustom itemsCustom = itemsService.findItemsById(id);
return itemsCustom;
}
@ResponseBody是用來(lái)將itemsCustom轉(zhuǎn)成json的注解,而@PathVariable注解則是跟REST有關(guān)了,@RequestMapping(value=”/ itemsView/{id}”)中的{id}表示一個(gè)占位符,那么這里面?zhèn)鬟^(guò)來(lái)的值會(huì)傳到被@PathVariable標(biāo)記的形參上,如果形參和占位符中的變量一樣的話,可以不用再注解中指定,否則注解中要指定這個(gè)占位符中的變量(即id)。這樣的話,參數(shù)就可以通過(guò)url傳到形參中來(lái)了。
但是這樣還不行,還要在前端控制器中針對(duì)REST進(jìn)行配置,如下:
<!-- 配置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(/),這個(gè)配置跟之前配置好的前端控制器是沒(méi)有沖突的,可以并存。經(jīng)過(guò)這樣配置后,就可以在瀏覽器中輸入http://localhost:8080/SpringMVC_Study/itemsView/1來(lái)測(cè)試返回到瀏覽器的數(shù)據(jù)了,可以看到返回一串json數(shù)據(jù)。
但是有個(gè)問(wèn)題,使用上面的配置后會(huì)攔截所有的url,那么對(duì)靜態(tài)資源也會(huì)攔截,所以DispatcherServlet也會(huì)解析靜態(tài)資源,但是這樣的話就會(huì)出錯(cuò),所以我們要設(shè)置一下不讓它解析靜態(tài)資源。如:
<!-- 靜態(tài)資源解析,包括js,css,img... --> <mvc:resources location="/js/" mapping="/js/**"></mvc:resources> <mvc:resources location="/img/" mapping="/img/**"></mvc:resources>
如果還有其他靜態(tài)資源的話,也要設(shè)置一下,這樣就不會(huì)去解析靜態(tài)資源了,訪問(wèn)靜態(tài)資源的時(shí)候就直接訪問(wèn)即可。
總結(jié)
以上就是本文關(guān)于淺談SpringMVC對(duì)RESTfull的支持的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
- 解決SpringMVC同時(shí)接收J(rèn)son和Restful時(shí)Request里有Map的問(wèn)題
- SpringMVC開(kāi)發(fā)restful API之用戶查詢代碼詳解
- Spring MVC利用Swagger2如何構(gòu)建動(dòng)態(tài)RESTful API詳解
- SpringMVC Restful api接口實(shí)現(xiàn)的代碼
- Spring MVC集成springfox-swagger2構(gòu)建restful API的方法詳解
- Spring mvc實(shí)現(xiàn)Restful返回json格式數(shù)據(jù)實(shí)例詳解
- SpringMVC restful 注解之@RequestBody進(jìn)行json與object轉(zhuǎn)換
- SpringMVC RESTful支持實(shí)現(xiàn)過(guò)程演示
相關(guān)文章
使用MockMvc進(jìn)行controller層單元測(cè)試 事務(wù)自動(dòng)回滾的完整案例
這篇文章主要介紹了使用MockMvc進(jìn)行controller層單元測(cè)試 事務(wù)自動(dòng)回滾的完整案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
JavaMail實(shí)現(xiàn)發(fā)送郵件功能
這篇文章主要為大家詳細(xì)介紹了JavaMail實(shí)現(xiàn)發(fā)送郵件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
SpringBoot參數(shù)校驗(yàn)與國(guó)際化使用教程
這篇文章主要給大家介紹了關(guān)于SpringBoot參數(shù)校驗(yàn)與國(guó)際化使用教程的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
詳解使用JavaMailSender給曾經(jīng)心愛(ài)的她再中秋發(fā)送一封特別的郵件
網(wǎng)站的服務(wù)端向用戶發(fā)郵件時(shí),郵件中往往需要攜帶圖片,鏈接等內(nèi)容。所以為了方便起見(jiàn),我們一般發(fā)送HTML格式的郵件,那么怎么去拼一個(gè)HTML格式的郵件呢?——Thymeleaf。開(kāi)始之前,先新建一個(gè)SpringBoot項(xiàng)目,并添加需要用到的依賴。然后就可以繼續(xù)往下了2022-09-09
使用EasyPoi實(shí)現(xiàn)多Sheet頁(yè)導(dǎo)出的示例代碼
在項(xiàng)目開(kāi)發(fā)中,我們常常會(huì)遇到導(dǎo)出多Sheet頁(yè)的需求,本文降維打擊介紹一下如何使用EasyPoi實(shí)現(xiàn)這一功能,文中的示例代碼簡(jiǎn)潔易懂,有需要的可以參考下2025-03-03
springboot多數(shù)據(jù)源配置及切換的示例代碼詳解
這篇文章主要介紹了springboot多數(shù)據(jù)源配置及切換,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09

