@SessionAttributes注解用于将控制类中的方法返回的对应的数据保存在session中,该注解只能用在类上。下面将介绍几种将数据传递给页面的同时怎样保存在session中的方式。
Map的put()方法:
@Controller
@SessionAttributes(value = { "id" })
public class StudentController {
@RequestMapping(value = "/student/login.do")
public String login(Map<String, Object> map) {
map.put("id", "29ec591c-ecb5-430e-9f86-1ef8a0b3d611");
return "result";
}
}
当@SessionAttributes注解的value属性值与Map集合的某个key相同时,该key对应的value就会被保存在session中。
......
@Controller
@SessionAttributes(types = { Integer.class })
public class StudentController {
@RequestMapping(value = "/student/login.do")
public String login(Map<String, Object> map) {
map.put("age", 18);
map.put("score", 98);
return "result";
}
}
Map集合中的数据类型与@SessionAttributes注解的types属性值一致时,该数据也会被保存在session中。
ModelAndView的addObject()方法:
......
@Controller
@SessionAttributes({"userInfo"})
public class UserInfoController {
@RequestMapping("/userinfo/toView.do")
public ModelAndView editView() {
ModelAndView mv = new ModelAndView("to");
UserInfo userInfo = new UserInfo();
userInfo.setUserName("admin");
userInfo.setPassword("123456");
userInfo.setMobile("18838218972");
userInfo.setAddress("湖南省升龙又一城");
mv.addObject("userInfo", userInfo);
return mv;
}
}
当@SessionAttributes注解的value属性值与ModelAndView 的某个addObject方法的第一个参数相同时,该方法的第二个参数就会被保存在session中。
......
@Controller
@SessionAttributes(types = { UserInfo.class })
public class UserInfoController {
@RequestMapping("/userinfo/toView.do")
public ModelAndView editView() {
ModelAndView mv = new ModelAndView("to");
UserInfo userInfo = new UserInfo();
userInfo.setUserName("admin");
userInfo.setPassword("123456");
userInfo.setMobile("18838218972");
userInfo.setAddress("湖南省升龙又一城");
mv.addObject("userInfo", userInfo);
return mv;
}
}
ModelAndView的addObject方法的第二个参数的数据类型与@SessionAttributes注解的types属性值一致时,该数据也会被保存在session中。
Model的addAttribute()方法:
......
@Controller
@SessionAttributes({"userInfo"})
public class UserInfoController {
@RequestMapping("/userinfo/toView.do")
public String editView(Model model) {
UserInfo userInfo = new UserInfo();
userInfo.setUserName("admin");
userInfo.setPassword("123456");
userInfo.setMobile("18838218972");
userInfo.setAddress("湖南省升龙又一城");
model.addAttribute("userInfo", userInfo);
return "to";
}
}
当@SessionAttributes注解的value属性值与Model的某个addAttribute方法的第一个参数相同时,该方法的第二个参数就会被保存在session中。
......
@Controller
@SessionAttributes(types = { UserInfo.class })
public class UserInfoController {
@RequestMapping("/userinfo/toView.do")
public String editView(Model model) {
UserInfo userInfo = new UserInfo();
userInfo.setUserName("admin");
userInfo.setPassword("123456");
userInfo.setMobile("18838218972");
userInfo.setAddress("湖南省升龙又一城");
model.addAttribute("userInfo", userInfo);
return "to";
}
}
Model的addAttribute方法的第二个参数的数据类型与@SessionAttributes注解的types属性值一致时,该数据也会被保存在session中。