@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中。