一、什么是REST?
符合REST约束风格和原则的应用程序或者设计就是REST
例如:
/blog/1 HTTP GET =>查询id=1的blog
/blog/1 HTTP DELETE =>删除id=1的blog
/blog/1 HTTP PUT =>更新blog
/blog/add HTTP POST =>新增blog
二、SpringMVC对REST应用提供了以下支持
1、利用@RequestMapping指定要处理请求的URI模板和HTTP请求的动作类型。
1.1、@RequestMapping应用
@RequestMapping可以定义在Controller类前和处理方法前,主要用于指定Controller的方法处理那些请求
1.2、在REST应用中,@RequestMapping可以采用以下使用格式:
(1)@RequestMapping(value="/emp/{id}",method=RequestMethod.GET)
(2)@RequestMapping(value="/emp/{id}",method=RequestMethod.DELETE)
(3)@RequestMapping(value="/emp/{id}",method=RequestMethod.PUT)
(4)@RequestMapping(value="/emp/add",method=RequestMethod.POST)
2、利用@PathVariable将URI模板中的变量映射到处理方法的参数上
2.1、@PathVariable应用
@PathVariable作用是将URI请求模板中的变量解析出来,映射到处理方法的参数上
2.2、@PathVariable使用示例
@RequestMapping(value="/appName/{name}",method=RequestMethod.GET)
public String execute(@PathVariable("name")int name)
return name;
}
2.3、URL请求匹配
比如上述的例子可以这样访问:http://www.eguid.cn/appName/参数
参数对应的就是name的值。
3、利用Ajax,在客户端发出PUT、POST、GET和DELETE请求
客户端发送PUT、POST、GET和DELETE请求
采用Ajax方式发送PUT、POST、GET和DELETE
$.ajax({
type:"PUT",//这里的参数可以是PUT、POST、GET和DELETE
url:"/appName/name",//请求地址,name就是你的参数
data:JSON.stringify($("#myform").serializaObject()),
dataType:"json",
contentYype:"application/json",//这个一定要设置
success:function(data){
//这里是成功获取信息后的处理方法
}
});
重要的补充:
data:JSON.stringify($("#myform").serializaObject())
$("#myform").serializaObject()是通过jquery直接将form表单生成json对象;
JSON.stringify()是把json对象转成json字符串的操作;
再次补充:spring4.x支持json对象解析,如果使用spring4.x,这里直接写$("#myform").serializaObject()就可以了,不需要再转成字符串。
后端spring可以直接通过实体类就可以自动解析json
4、静态资源访问处理
采用RESTful架构后,必须将web.xml中控制器拦截的请求设置为 ‘ / ’ ;但是这样会产生一个问题,就是会将css,js,图片等静态资源拦截,发生404错误。
解决方案如下:
1、配置<mvc:resources/>
springMVC配置文件中这样使用:
<mvc:resources mapping="请求URI" location="资源位置";
2、在springMVC配置文件中使用<mvc:default-servlet-handler/>
配置该指令放行默认的静态资源:
<mvc:default-servlet-handler/>
大部分情况下第二种就可以解决问题,而且方便简单