1.什么是
RESTful
其实是一种开发的理念,是对http
的很好的诠释。更详细的说明请参考http://www.ruanyifeng.com/blog/2011/09/restful.html
。-
2.作用
- 1.对
url
进行规范,有RESTful
风格的url。
非RESTful
的url
:http://..../queryItems.action?id=1
而RESTful
风格的url
:http://..../ queryItems /1
特点:RESTful
风格的url
简洁,将参数通过url
传递到服务端。 - 2.对
http
的方法规范
不管是删除、添加、更新,使用的url
是一致的。如果要进行删除,需要设置http
的方法为delete
,同理添加也是类似。而后台的Controller
方法需要判断http
方法,如果是delete
则执行删除,如果是add
则执行添加。 - 3.对
http
的contentType
规范
请求时指定contentType
,要json
数据,设置成json
格式的type
。
说明:实际开发中一般只是用到第一条和第三条规范。
- 1.对
3.例子(工程
springmvc-mybatis09
)
需求:查询商品信息,返回json
数据。4.
Controller
方法:
定义方法,进行url
映射使用RESTful
风格的url
,将查询商品信息id
传入到Controller
方法中。
ItemsController.java
@RequestMapping("/itemsView/{id}")
public @ResponseBody ItemsCustom itemsView(@PathVariable("id") Integer id)throws Exception{
//调用service查询商品信息
ItemsCustom itemsCustom = itemsService.findItemsById(id);
return itemsCustom;
}
说明:
1.
@RequestMapping(value="/ viewItems/{id}")
:{×××}
占位符,请求的URL
可以是"/viewItems/1"
或"/viewItems/2"
,通过在方法中使用@PathVariable
获取{×××}
中的×××
变量。2.
@PathVariable
用于将请求URL
中的模板变量映射到功能处理方法的参数上。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.对静态资源的访问
当我们使用地址http://localhost:8080/springmvc-mybatis09/ js/jquery-1.4.4.min.js
访问工程中的静态资源时还是由前端控制器解析的,这样很显然是找不到Handler
,所以访问不到静态资源。出现404错误。此时需要在springmvc.xml
中添加对静态资源访问的配置:
<!-- 静态资源(js、css、img)的解析 -->
<mvc:resources location="/js/" mapping="/js/**"></mvc:resources>
这样就能访问到上面的静态资源了。