restful只是一种资源定位及资源操作的风格,并不是一种硬性协议;基于restful风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。
1、传统风格
最开始接触web项目的时候用的纯JavaWeb写的一个个Servlet,提交的form表单或者a标签中都携带一个很重要的参数method!然后每个Servlet中根据这个method方法写了很多不同的请求处理。最后处理完返回不同的结果。
URL:http://localhost:8080/user.do?method=savepwd这种形式的url,通过携带参数的不同进行不同的处理。
@RequestMapping("/hello")
public String requestPage(String a, String b, Model model){
String result = "successful!";
model.addAttribute("message",result);
model.addAttribute("a", a);
model.addAttribute("b", b);
return "pass";
}
前端传入的参数必须和方法的形参参数名匹配,否则无法成功取值!
2、Restful风格
restful风格之后,可以将携带的参数名进行隐藏,也可以通过不同的请求方式作出不同的处理。最后的URL操作如下,我只传一个参数1,而这个1到底是什么变量?又有什么作用?访问者只知道有响应,但是不知道请求方式、参数名…
URL:http://localhost:8080/user.do/1 修改1的密码
URL:http://localhost:8080/user.do/1 获取1的查询信息
测试
注意requestMapping的参数值,使用{}占位层次分明,形参中加上@PathVariable注解。
method表示请求方式,此时只能通过get方式请求了,使用其他请求将会无法访问。
@RequestMapping(path="/rest/{a}/{b}",method = RequestMethod.POST)
public String restFul(@PathVariable String a,@PathVariable String b, Model model){
String result = "successful!";
model.addAttribute("message",result);
model.addAttribute("a", a);
model.addAttribute("b", b);
return "pass";
}
优点:最大的好处就是安全,可以根据不同的请求方式作出不同的处理