@ModelAttribute
出现在方法上,表示当前方法会在控制器的方法执行之前,先执行。它可以修饰没有返回值的方法,也可以修饰有具体返回值的方法。
应用场景:当表单提交数据不是完整的实体类数据时,保证没有提交数据的字段使用数据库对象原来的数据。@SessionAttribute
用于多次执行控制器方法间的参数共享。
实例:
1. 把request域中的参数提取存入session域中
@Controller
@RequestMapping(path = "/anno")
@SessionAttributes(value = "msg")
public class AnnoController {
@RequestMapping("/testSessionAttributes")
public String testSessionAttributes(Model model){
System.out.println("testSessionAttributes....");
model.addAttribute("msg","妹妹");
return "success";
}
- 从session域取值(上一步存入了msg=妹妹)
@RequestMapping("/getSessionAttributes")
public String getSessionAttributes(ModelMap modelMap){
System.out.println("getSessionAttributes....");
String msg = (String)modelMap.get("msg");
System.out.println(msg);
return "success";
}
- 清除值
@RequestMapping("/delSessionAttributes")
public String delSessionAttributes(SessionStatus status){
status.setComplete();
return "success";