SpringMVC实现RESTful风格

RESTful简介

1,REST架构师一个抽象的概念,目前主要是基于HTTP协议实现,其目的是为了提高系统的可伸缩性,降低应用之间的耦合度,便于框架分布式处理程序。

2,REST主要对以下两方面进行了规范

-定位资源的URL风格,例如

http://baidu.com/admin/1234

http://baidu.com/admin/1234/10/11

-如何对资源操作

采用HTTP协议规定的GET、POST、PUT、DELETE动作处理资源的增删该查操作


SpringMVC实现RESTful风格

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代码SpringMVC实现RESTful风格
  1. $.ajax({
  2. type:"DELETE",
  3. url:"/spring_crud_restful/emp/deleteEmp/"+id,
  4. dataType:"json",
  5. success:function(data){
  6. alert(data);
  7. location.href="/spring_crud_restful/emp/listEmp/1";
  8. }
  9. });

7,静态资源访问处理

采用RESTful架构后,需要将web.xml中控制器拦截的请求设置为/,这样会将css,js等静态资源进行拦截,发送404错误。

解决方法:

--配置<mvc:resources/>

<mvc:resources mapping="请求URI" location="资源位置" />

--配置<mvc:default-servlet-handler/>

<mvc:default-servlet-handler/>