SpringMVC系列知识:(四)restful风格

2020-11-19 15:33:02 浏览数 (1)

问题:

要求我们后台获取请求数据的代码,必须按照指定的键名来获取请求数据。键名

就是请求数据的键名。这样造成,一旦请求数据的键名发生变更,造成后台的逻辑

代码也需要进行变更。前台的请求数据的键名和后台的逻辑代码之间的耦合性过高,造成前台和后台的开发过程中相互依赖性过高。怎么办?

解决:

让前台和后台代码之间进行解耦。也就说不再让请求请求数据的键名造成前后台

代码之间的依赖。前台请求数据的键名发生变更,不影响后台逻辑代码的正常执行

实现:

请求数据不再以键值对的形式发送给后台使用。直接发送数据本身给后台即可。

既然请求数据不再使用键值对,请求数据必须按照指定的格式来进行发送。使用

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";
    }

0 人点赞