SpringMvc请求路径
- 1. 环境准备
- 2. 问题提出
- 3. 设置映射路径
- 3.1 方法一:修改Controller
- 3.2 方法二:优化路径配置
1. 环境准备
项目结构
BookController类
public class BookController {
@RequestMapping("/save")
@ResponseBody
public String save(){
System.out.println("book save");
return "{'springMvc':'book save'}";
}
}
UserController类
public class UserController {
@RequestMapping("/save")
@ResponseBody
public String save(){
System.out.println("user save");
return "{'springMvc':'user save'}";
}
@RequestMapping("/delete")
@ResponseBody
public String delete(){
System.out.println("user delete");
return "{'springMvc':'user delete'}";
}
}
注意:BookController类 与 UserController类 都含有相同的方法名称以及相同的访问路径:http://localhost:8080/save
2. 问题提出
启动tomcat服务器报错:
从错误信息可以看出:
- UserController有一个save方法,访问路径为
http://localhost:8080/save
- BookController也有一个save方法,访问路径为
http://localhost:8080/save
- 当访问
http://localhost:8080/saved
的时候,到底是访问UserController还是BookController?
3. 设置映射路径
每人设置不同的请求路径,冲突问题该如何解决?
解决思路: 为不同模块设置模块名作为请求路径前置
对于Book模块的save,将其访问路径设置http://localhost/book/save
对于User模块的save,将其访问路径设置http://localhost/user/save
这样在同一个模块中出现命名冲突的情况就比较少了。
3.1 方法一:修改Controller
修改UserController :设置模块名作为请求路径前置
修改BookController :设置模块名作为请求路径前置
方法一缺点:每个方法前面都需要进行修改,写起来比较麻烦而且还有很多重复代码,如果/user或者/book后期发生变化,所有的方法都需要改,耦合度太高。
3.2 方法二:优化路径配置
修改UserController :设置模块名作为请求路径前置
修改BookController :设置模块名作为请求路径前置
注意:
- 当类上和方法上都添加了
@RequestMapping
注解,前端发送请求的时候,要和两个注解的value值相加匹配才能访问到(例如http://localhost:8080/user/save)。 @RequestMapping
注解value属性前面加不加/
都可以(重点)