1.什么是
RESTful
其實(shí)是一種開發(fā)的理念,是對(duì)http
的很好的詮釋。更詳細(xì)的說明請(qǐng)參考http://www.ruanyifeng.com/blog/2011/09/restful.html
。-
2.作用
- 1.對(duì)
url
進(jìn)行規(guī)范,有RESTful
風(fēng)格的url。
非RESTful
的url
:http://..../queryItems.action?id=1
而RESTful
風(fēng)格的url
:http://..../ queryItems /1
特點(diǎn):RESTful
風(fēng)格的url
簡潔,將參數(shù)通過url
傳遞到服務(wù)端。 - 2.對(duì)
http
的方法規(guī)范
不管是刪除、添加、更新,使用的url
是一致的。如果要進(jìn)行刪除,需要設(shè)置http
的方法為delete
,同理添加也是類似。而后臺(tái)的Controller
方法需要判斷http
方法,如果是delete
則執(zhí)行刪除,如果是add
則執(zhí)行添加。 - 3.對(duì)
http
的contentType
規(guī)范
請(qǐng)求時(shí)指定contentType
,要json
數(shù)據(jù),設(shè)置成json
格式的type
。
說明:實(shí)際開發(fā)中一般只是用到第一條和第三條規(guī)范。
- 1.對(duì)
3.例子(工程
springmvc-mybatis09
)
需求:查詢商品信息,返回json
數(shù)據(jù)。4.
Controller
方法:
定義方法,進(jìn)行url
映射使用RESTful
風(fēng)格的url
,將查詢商品信息id
傳入到Controller
方法中。
ItemsController.java
@RequestMapping("/itemsView/{id}")
public @ResponseBody ItemsCustom itemsView(@PathVariable("id") Integer id)throws Exception{
//調(diào)用service查詢商品信息
ItemsCustom itemsCustom = itemsService.findItemsById(id);
return itemsCustom;
}
說明:
1.
@RequestMapping(value="/ viewItems/{id}")
:{×××}
占位符,請(qǐng)求的URL
可以是"/viewItems/1"
或"/viewItems/2"
,通過在方法中使用@PathVariable
獲取{×××}
中的×××
變量。2.
@PathVariable
用于將請(qǐng)求URL
中的模板變量映射到功能處理方法的參數(shù)上。3.如果
RequestMapping
中表示為"/viewItems/{id}"
,id
和形參名稱一致,@PathVariable
不用指定名稱。5.在
web.xml
中重新配置前端控制器
<!-- springMVC前端控制器 RESTful的前端控制器 -->
<servlet>
<servlet-name>springmvc_restful</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_restful</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
說明:這里配置的前端控制器可以和之前配置的前端控制器共存。最后使用地址http://localhost:8080/springmvc-mybatis09/items/itemsView/1
訪問測試。
- 6.對(duì)靜態(tài)資源的訪問
當(dāng)我們使用地址http://localhost:8080/springmvc-mybatis09/ js/jquery-1.4.4.min.js
訪問工程中的靜態(tài)資源時(shí)還是由前端控制器解析的,這樣很顯然是找不到Handler
,所以訪問不到靜態(tài)資源。出現(xiàn)404錯(cuò)誤。此時(shí)需要在springmvc.xml
中添加對(duì)靜態(tài)資源訪問的配置:
<!-- 靜態(tài)資源(js、css、img)的解析 -->
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
這樣就能訪問到上面的靜態(tài)資源了。