1.RequestParam注解
作用:把请求中的指定名称的参数传递给控制器中的形参赋值
当controller中属性名和请求中的属性明不同的时候就可以用这个注解来解决问题。
请求链接:
<a href="testRequestParam?sname=aaa">testRequestParam</a>
控制器代码
@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam(name = "sname") String str){
System.out.println(str);
return "success";
}
控制台打印结果:
aaa
2.RequestBody注解
作用:用于获取请求体的内容(注意:get方法不可以)
请求表单:
<form action="testRequestBody" method="post">
姓名:<input name="name"> <br/>
年龄: <input name="age"> <br/>
<input type="submit" value="提交"/>
</form>
控制器代码:
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody String body){
System.out.println(body);
return "success";
}
执行结果:
控制台:name=aaa&age=111
3. ModelAttribute注解
出现在方法上:表示当前方法会在控制器方法执行前线执行。
出现在参数上:获取指定的数据给参数赋值。
请求链接:
情景1:有返回值
<a href="testModelAttribute?username=aaa">testModelAttribute</a>
控制器代码:
//这段代码会先执行
@ModelAttribute
public User findUserByName(String username){
//模拟查询数据库结果
User user = new User();
user.setName(username);
user.setAge("20");
return user;
}
@RequestMapping("/testModelAttribute")
public String testModelAttribute(User user){
System.out.println(user);
return "success";
}
控制台打印结果:User{name=‘aaa’, age=20}
情景2:无返回值
访问链接:
<a href="testModelAttribute?username=aaa">testModelAttribute</a>
控制器代码:
@ModelAttribute
public void findUserByName(String username, Map<String, User> map){
//模拟查询数据库结果
User user = new User();
user.setName(username);
user.setAge("21");
map.put("user1",user);
}
@RequestMapping("/testModelAttribute")
public String testModelAttribute(@ModelAttribute("user1") User user) {
System.out.println(user);
return "success";
}
控制台:User{name=‘aaa’, age=21}
4. SessionAttributes注解
请求链接:
<a href="testSave">存</a><br/>
<a href="testRead">读</a><br/>
<a href="testDelete">删</a><br/>
控制器代码:
@Controller
@SessionAttributes(value = {"name", "age"}, types={String.class, String.class})
public class SessionTestController {
@RequestMapping("/testSave")
public String testSave(Model model){
model.addAttribute("name","张三");
model.addAttribute("age","20");
return "success";
}
@RequestMapping("/testRead")
public String testRead(ModelMap modelMap){
String name = (String) modelMap.get("name");
String age = (String) modelMap.get("age");
System.out.println(name+age);
return "success";
}
@RequestMapping("/testDelete")
public String testDelete(SessionStatus sessionStatus){
sessionStatus.setComplete();
return "success";
}
}
运行时,先点存,然后点读,控制台打印:张三20,然后点删后在点读,控制台打印:nullnull
当然也可以不在类名上面添加这个注解,那么Mode默认会将数据存储到Request域,如果添加了会存到Session域。
5.其他注解
CookieValue注解
作用:用于获取指定cookie的名称的值
RequestHeader注解
作用:获取指定请求头的值
PathVariable注解
作用:拥有绑定url中的占位符的。例如:url中有/delete/{id},{id}就是占位符