SpringMVC实现RESTful风格
2015-06-02 11:57
281 查看
转自:http://lydia-fly.iteye.com/
RESTful简介
1,REST架构师一个抽象的概念,目前主要是基于HTTP协议实现,其目的是为了提高系统的可伸缩性,降低应用之间的耦合度,便于框架分布式处理程序。
2,REST主要对以下两方面进行了规范
-定位资源的URL风格,例如
http://baidu.com/admin/1234
http://baidu.com/admin/1234/10/11
-如何对资源操作
采用HTTP协议规定的GET、POST、PUT、DELETE动作处理资源的增删该查操作
3,什么是RESTful?
-符合REST约束风格和原则的应用程序或设计就是RESTful.
eg: /emp/1 HTTP GET 查询id=1的emp
/emp/1 HTTP DELETE 删除id=1的emp,实验中直接删除会报405错误,但是采用$.ajax异步删除就没问题
/emp/1 HTTP PUT 跟新emp
/emp/add HTTP POST 新增emp
4,Spring对RESTful的支持
- Spring MVC 对 RESTful应用提供了以下支持
- 利用@RequestMapping 指定要处理请求的URI模板和HTTP请求的动作类型
- 利用@PathVariable讲URI请求模板中的变量映射到处理方法参数上
- 利用Ajax,在客户端发出PUT、DELETE动作的请求
eg: @RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String toUpdate(@PathVariable("id") Integer id, Model model) {}
5,RequestMapping的一般应用格式。
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@RequestMapping(value = "/{id}", method = RequestMethod.POST)
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE) // 因为这个需要Ajax请求,所有返回的是个json
@ResponseBody
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
6,客户端发送PUT,DELETE请求
可以采用Ajax方式发送PUT和DELETE请求
Java代码
$.ajax( {
type : "DELETE",
url : "/spring_crud_restful/emp/deleteEmp/" + id,
dataType : "json",
success : function(data) {
alert(data);
location.href = "/spring_crud_restful/emp/listEmp/1";
}
});
7,静态资源访问处理
采用RESTful架构后,需要将web.xml中控制器拦截的请求设置为/,这样会将css,js等静态资源进行拦截,发送404错误。
解决方法:
--配置<mvc:resources/>
<mvc:resources mapping="请求URI" location="资源位置" />
--配置<mvc:default-servlet-handler/>
<mvc:default-servlet-handler/>
RESTful简介
1,REST架构师一个抽象的概念,目前主要是基于HTTP协议实现,其目的是为了提高系统的可伸缩性,降低应用之间的耦合度,便于框架分布式处理程序。
2,REST主要对以下两方面进行了规范
-定位资源的URL风格,例如
http://baidu.com/admin/1234
http://baidu.com/admin/1234/10/11
-如何对资源操作
采用HTTP协议规定的GET、POST、PUT、DELETE动作处理资源的增删该查操作
3,什么是RESTful?
-符合REST约束风格和原则的应用程序或设计就是RESTful.
eg: /emp/1 HTTP GET 查询id=1的emp
/emp/1 HTTP DELETE 删除id=1的emp,实验中直接删除会报405错误,但是采用$.ajax异步删除就没问题
/emp/1 HTTP PUT 跟新emp
/emp/add HTTP POST 新增emp
4,Spring对RESTful的支持
- Spring MVC 对 RESTful应用提供了以下支持
- 利用@RequestMapping 指定要处理请求的URI模板和HTTP请求的动作类型
- 利用@PathVariable讲URI请求模板中的变量映射到处理方法参数上
- 利用Ajax,在客户端发出PUT、DELETE动作的请求
eg: @RequestMapping(value = "/{id}", method = RequestMethod.GET)
public String toUpdate(@PathVariable("id") Integer id, Model model) {}
5,RequestMapping的一般应用格式。
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@RequestMapping(value = "/{id}", method = RequestMethod.POST)
@RequestMapping(value = "/{id}", method = RequestMethod.DELETE) // 因为这个需要Ajax请求,所有返回的是个json
@ResponseBody
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
6,客户端发送PUT,DELETE请求
可以采用Ajax方式发送PUT和DELETE请求
Java代码
$.ajax( {
type : "DELETE",
url : "/spring_crud_restful/emp/deleteEmp/" + id,
dataType : "json",
success : function(data) {
alert(data);
location.href = "/spring_crud_restful/emp/listEmp/1";
}
});
7,静态资源访问处理
采用RESTful架构后,需要将web.xml中控制器拦截的请求设置为/,这样会将css,js等静态资源进行拦截,发送404错误。
解决方法:
--配置<mvc:resources/>
<mvc:resources mapping="请求URI" location="资源位置" />
--配置<mvc:default-servlet-handler/>
<mvc:default-servlet-handler/>
相关文章推荐
- 深入理解Java Class文件格式(九)
- elasticsearch java API------与集群交互
- 解决从github下载web的源码部署到eclipse的问题
- 深入理解Java Class文件格式(八)
- JAVA中的抽象方法和抽象类总结
- 深入理解Java Class文件格式(七)
- Spring整个Ibatis之SqlMapClientDaoSupport
- 深入理解Java Class文件格式(六)
- 深入理解Java Class文件格式(五)
- ubuntu下hadoop2.6在eclipse上的配置
- 深入理解Java Class文件格式(四)
- C#与java中对抽象类、接口的继承和重写区别
- Caused by: java.sql.SQLException: Connection is read-only. Queries leading to da
- JAVA 、WebService 必须懂的 NotePad 工具小窍门
- JAVA代码实现下载单个文件,和下载打包文件
- 深入理解Java Class文件格式(三)
- Eclipse上无法用debug
- 深入理解Java Class文件格式(二)
- JSON 之JAVA 解析
- 深入理解Java Class文件格式(一)