【SSM】SSM之SpringMVC框架:@SessionAttributes註解

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章