@RequestMapping
- 可以创建数量不限的控制器,分别处理不同的业务请求
- 每个控制器可以有多个处理请求的方法,每个方法负责不同的请求操作
如果把请求映射到控制器的对应的方法?
@RequestMapping
类定义和方法定义都可以使用
- 类定义处,提供初步请求映射信息
- 方法处,提供详细映射信息
@RequestMapping包含四个方面过滤条件(URL,Param,Method,Header)
- URL (此URL相对与Web应用的部署路径)
- 常规URL
@RequestMapping(value = "/login.html")
public String loginPage() {
return "login";
}
-
Ant风格URL
- /user/*/login:匹配/user/xxx/login、/user/yyy/login
- /user/**/login: 匹配/user/login、/user/aaa/login
- /user/login??: 匹配/user/loginaa、/user/loginbb
- /user/{userId}: 匹配 /user/123、/user/456
- /user/**/{userId} : 匹配 /user/aaa/bbb/123、/user/xxx/345
其中{userId}占位符可以通过@PathVariable("userId") 绑定到操作方法的参数中
@RequestMapping(value = "/user/{userId}")
public String loginPage(@PathVariable String userId, String otherParam) {
...
}
2. 请求参数
* 请求必须要包含一个名为param1的参数, 例如http://localhost:8080/example/login.html?param1=xxx ,否则404
@RequestMapping(value = "/login.html" params = "param1")
public String loginPage() {
return "login";
}
* 请求中不能包含一个名为param1的参数,例如http://localhost:8080/example/login.html?param1=xxx ,会404
@RequestMapping(value = "/login.html" params = "!param1")
public String loginPage() {
return "login";
}
* 请求中包含一个名为param1的参数,但其值不能为value1, 并将其传入方法
@RequestMapping(value = "/login.html" params = "param1!=value1")
public String loginPage(@RequestParam("param1") String param1) {
return "login";
}
* 请求中包含名为param1和param2的参数,但其值必须为param1必须等于value1
@RequestMapping(value = "/login.html" params = {"param1=value1", "param2"})
public String loginPage() {
return "login";
}
3. 请求方法
* 请求中包含名为param1和param2的参数,但其值必须为param1必须等于value1,必须是POST请求
@RequestMapping(value = "/login.html", params = {"param1=value1", "param2"}, method = RequestMethod.POST)
public String loginPage() {
return "login";
}
4. 请求头
* 请求中包含名为param1和param2的参数,但其值必须为param1必须等于value1,必须是POST请求, content-type必须是text/*(类似参数的处理规则)
@RequestMapping(value = "/login.html", params = {"param1=value1", "param2"}, method = RequestMethod.POST, headers = "content-type=text/*")
public String loginPage() {
return "login";
}