问题:
要求我们后台获取请求数据的代码,必须按照指定的键名来获取请求数据。键名
就是请求数据的键名。这样造成,一旦请求数据的键名发生变更,造成后台的逻辑
代码也需要进行变更。前台的请求数据的键名和后台的逻辑代码之间的耦合性过高,造成前台和后台的开发过程中相互依赖性过高。怎么办?
解决:
让前台和后台代码之间进行解耦。也就说不再让请求请求数据的键名造成前后台
代码之间的依赖。前台请求数据的键名发生变更,不影响后台逻辑代码的正常执行
实现:
请求数据不再以键值对的形式发送给后台使用。直接发送数据本身给后台即可。
既然请求数据不再使用键值对,请求数据必须按照指定的格式来进行发送。使用
restful格式。
传统的get方式请求格式:
localhost:8080/project/aa?uname=zhangsan&age18
restful请求格式:
localhost:8080/project/aa/zhangsan/18
注意:
restful格式要求请求数据作为请求地址的一部分发送给后台使用。
DispactherServlet拦截除jsp请求以外的所有请求,浏览器发起了一个
restful格式的请求,会被DispatcherServlet拦截处理。而DispatcherServlet
根据请求调用对应的单元方法处理请求。比如:
locahost:8080/project/aa/zhangsan/18
DispatcherServlet会调用一个@RequestMapping的值为”aa/zhangsan/18”
的单元方法来处理此次请求。但是restful格式请求的请求数据每次都不同,也就
说每次请求地址都不相同,我们无法声明对应的单元方法来处理请求。所以SpringMVC在单员方法中使用指定的格式来进行模糊匹配,具体实现参照示例代码。
SpringMVC在单员方法中使用指定的格式来进行模糊匹配
代码语言:javascript复制 @RequestMapping("aa/{un}/{age}")
public String demoResful(@PathVariable("un") String uname, @PathVariable Integer age){
//处理请求
System.out.println("MyController.demoResful:SpringMVC处理restful格式请求:" uname ":" age);
//响应结果
return "aa";
}