其他网址
另见:《跟我学SpringMVC》=> 6.5 请求映射
@RequestMapping简介
@RequestMapping(value="/testRequestMapping",
method={RequestMethod.POST},
params = {"username=jack"},
headers = {"Accept"})
value和path的作用都是指定请求路径,当有注解后面只有一个参数的时候可以直接写路径
params指定请求参数中必须包含username的属性,且值必须为jack
headers用于指定请求的信息中必须包含的请求头信息
RequestMapping注解可以用在类上或者方法上。
url映射配置方法
(1)映射单个URL
@RequestMapping("") 或 @RequestMapping(value="")
(2)映射多个URL
@RequestMapping({"",""}) 或 @RequestMapping(value={"",""})
路径开头是否加斜杠/均可,建议加上,如:@RequestMapping("/hello")
特殊配置
@RequestMapping("")与@RequestMapping("/")效果一样,都是根路径。
五种映射方式
参考网址:@RequestMapping使用须知_Java_zalan01408980的博客-CSDN博客
@RequestMapping 一共有五种映射方式
映射方式 |
说明 |
示例 |
标准映射 |
标准URL 映射是最简单的一种映射 |
@RequestMapping("/hello") @RequestMapping({"/hello","/world/test"}) |
Ant风格 |
Ant 通配符有三种: ?:匹配任何单字符 *:匹配任意数量的字符(含 0 个) **:匹配任意数量的目录(含 0 个) |
(1)@RequestMapping("/?/hello/") (2)@RequestMapping("/*/hello") (3)@RequestMapping("/**/hello") |
占位符 |
可以通过一个或多个 {} 占位符映射。 若 URL 中的 userId 是纯数字,那么使用 @PathVariable 做绑定时,可以根据自己的需求将方法参数类型设置为 Long、 Integer、String等。 @PathVariable("") 不能简写为 @PathVariable
|
@RequestMapping("/user/{userId}/show") public ModelAndView show(@PathVariable("userId") Long userId) { // 创建 ModelAndView 对象,并设置视图名称 ModelAndView mv = new ModelAndView("show"); // 添加模型数据 mv.addObject("msg", "User ID:" + userId); return mv; } |
限制请求方法 |
HTTP 请求中最常用的请求方法是 GET、POST,还有其他的一些方法,如:DELET、PUT、HEAD 等 |
@RequestMapping(value="/hello", method=RequestMethod.POST) 如需限制多个请求方法,以大括号包围,逗号隔开即可,例如: method={RequestMethod.GET,RequestMethod.POST} |
限制请求参数 |
请求中必须带有userId 参数 参数的限制规则如下: (1)params="userId" 请求参数中必须包含 userId (2)params="!userId" 请求参数中不能包含 userId (3)params="userId!=1" 请求参数中必须包含 userId,但不能为 1 (4)params={"userId","userName"} 必须包含 userId 和 userName 参数 (5)params={"userId=1","userName!=2"}必须包含 userId 和 userName 参数,且userId值必须为1,userName值必须不为2。 |
@RequestMapping(value="/user/show",params="userId") public ModelAndView show(@RequestParam("userId") Long userId) { // 创建 ModelAndView 对象,并设置视图名称 ModelAndView mv = new ModelAndView("show"); // 添加模型数据 mv.addObject("msg", "User ID:" + userId); return mv; } |
参数的依赖注入
@RequestMapping注解的方法的参数会自动注入,示例如下。
<a href="param/testParam?username=hehe&password=123"></a>
public class User {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
//请求参数绑定
@RequestMapping("/testParam")
public String testParam(String username,String password, User user){
System.out.println("执行了...");
System.out.println("用户名:"+username);
System.out.println("密码:"+password);
User.name = username;
User.password = password;
System.out.println("User");
System.out.println(" " + User.name);
System.out.println(" " + User.password);
return "success";
}
运行结果
执行了...
用户名:hehe
密码:123
User
hehe
123