1.@RequestParam
1)作用:把请求中指定名称的参数给控制器中的形参赋值
2)属性:value(name):请求参数中的名称
required:请求参数中是否必须提供此参数,默认值:true,表示必须提供该参数,若不提供,将会报错
@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam(value="name") String username){
System.out.println(username);
return "success";
}
访问该方法时,请求中的参数名称必须为"name",不传或者传其他参数名的参数将会报错 访问示例:localhost:8080/testRequestParam?name=Kavins(参数必须存在且参数名为name)2.@RequestBody 1)作用:用于获取请求体内容,直接使用得到的是key=value&key=value...结构的数据,get请求方式不适用 2)属性:required:是否必须有请求体,默认值是true,当取值为true时,get请求方式会报错,如果值为false,get请求得到的是null
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String body){
System.out.println(body);
return "success";
}
如图提交post请求 方法中的参数body获取的为post请求的整个请求体(姓名+年龄),而不是指其中的一个参数 后台打印结果为:username=Kavins&age=183.@PathVaribale 1)作用:用于绑定url中的占位符,例如:请求url中/delete/{id},{id}就是url占位符,url支持占位符是spring3.0之后加入的,是SpringMVC支持rest风格url的一个重要标志 2)属性:value:用于指定url中占位符名称 required:是否必须提供占位符,默认为true
@RequestMapping("/testPathVariable/{sid}")
public String testPathVariable(@PathVariable(value="sid") String id){
System.out.println(id);
return "success";
}
访问示例:http://localhost:8080/springmvc/anno/testPathVariable/100
后台将会打印1004.@RequestHeader 1)作用:用于获取请求消息头 2)属性:value:提供消息头名称 required:是否必须有此消息头,默认值为true
@RequestMapping("/testRequestHeader")
public String testRequestHeader(@RequestHeader(value="Accept") String header){
System.out.println(header);
return "success";
}
打印结果:text/html, application/xhtml+xml, image/jxr, */*
5.@ModelAttribute 1)作用:该注解是SpringMVC4.3版本以后新加入的,他可以用来修饰方法和参数 修饰方法:表示当前方法会在控制器的方法之前先执行,他可以修饰没有返回值的方法,也可以修饰有具体返回值的方法. 参数:获取指定的数据给参数赋值 2)属性:value:用于获取数据的key,key可以使POJO类的属性名称,也可以是map结构的key 修饰有返回值方法
@RequestMapping("/testModelAttribute")
public String testModelAttribute(User user){
System.out.println("testModelAttribute执行了");
System.out.println(user);
return "success";
}
/**
* 该方法会先执行(有返回值),返回值会传给控制器方法的user参数
*/
@ModelAttribute
public User showUser(String username,Integer age){
System.out.println("showUser执行了...");
//通过用户查询数据库(模拟)
User user = new User();
user.setUsername(username);
user.setAge(age);
user.setDate(new Date());
return user;
}
点击提交后台打印:
showUser执行了...
testModelAttribute执行了
User{username='Kavins', age=18, date=Sat Feb 15 19:15:34 CST 2020}
//修饰没有返回值的方法:
@RequestMapping("/testModelAttribute")
public String testModelAttribute(@ModelAttribute("userMap") User user){
System.out.println("testModelAttribute执行了");
System.out.println(user);
return "success";
}
//该方法会先执行(没有返回值,将user封装在了key值为userMap的map中,在控制器方法的参数中使用@ModelAttribute("userMap")得到user对象)
@ModelAttribute
public void showUser(String username,Integer age,Map<String,User> map){
System.out.println("showUser执行了...");
//通过用户查询数据库(模拟)
User user = new User();
user.setUsername(username);
user.setAge(age);
user.setDate(new Date());
map.put("userMap",user);
}
打印结果:
showUser执行了...
testModelAttribute执行了
User{username='Kavins', age=18, date=Sat Feb 15 19:20:02 CST 2020}
来源:https://www.cnblogs.com/kavins/p/12315757.html