@SessionAttributes注解用于:将响应方法中处理请求时添加的与该注解匹配的数据添加到session中。
1、该注解只能应用在类上
2、这种添加方式在Map的put方法、Model和ModelMap的addAttribute方法或ModelAndView的addObject方法中有效。
3、@SessionAttributes值:可以通过value或names注解属性指定哪些属性放到Session中,还可以通过type注解属性进行指定。
例:
@Controller
@SessionAttributes(value= {"userinfo"})//也可以写为types={UserInfo.class}
public class UserInfoController{
@RequestMapping("/userinfo/toView.do")
public String toView(Model model) {
UserInfo userinfo = new UserInfo();
userinfo.setId("123456");
userinfo.setName("小王");
model.addAttribute("userinfo",userinfo);
/*此方法中的"userinfo"与SessionAttributes注解中的值相匹配
在执行完这个响应方法后,session中也会有此userinfo*/
return "userinfo/ok";
}
/*ModelMap的方式
@RequestMapping("/userinfo/toView.do")
public String toView(ModelMap modelmap) {
UserInfo userinfo = new UserInfo();
userinfo.setId("123456");
userinfo.setName("小王");
modelmap.addAttribute("userinfo",userinfo);
return "userinfo/ok";
}
*/
/*map的方式
@RequestMapping("/userinfo/toView.do")
public String toView(Map<String,Object> map) {
UserInfo userinfo = new UserInfo();
userinfo.setId("123456");
userinfo.setName("小王");
map.put("userinfo",userinfo);
return "userinfo/ok";
}
*/
/*ModelAndView的方式
@RequestMapping("/userinfo/toView.do")
public ModelAndView toView() {
ModelAndView mv = new ModelAndView("userinfo/ok");
UserInfo userinfo = new UserInfo();
userinfo.setId("123456");
userinfo.setName("小王");
mv.addObject("userinfo",userinfo);
return mv;
}
*/
//测试页面响应
@RequestMapping("/userinfo/toTest.do")
public String toTest() {
return "userinfo/test";
}
}
测试:
主页面:
添加数据请求响应页面:
session测试页面:
测试结果: