1. 程式人生 > >SpringMVC框架在Controller中對於Session的處理

SpringMVC框架在Controller中對於Session的處理

Controller中的程式碼:

@Controller
@SessionAttributes({"User","Y"})		//此處定義此Controller中將要建立和使用哪些session中的物件名
public class UserController {
	@Resource
	private UserService userService;
	
	@RequestMapping("user_login")
	public String login(User user, ModelMap modelMap){		
		//modelMap自動與session對應,你在往modelmap中新增對應屬性便是往session中新增屬性(前提是你已經在@SessionAttributes註解中定義好)
		User userTemp = this.userService.findByName(user.getName());
		if((userTemp.getState() == 1) && (userTemp.getPassword().equals(user.getPassword())){
			modelMap.addAttribute("User", userTemp);		//成功將userTemp存入session中
			modelMap.addAttribute("Y",1);					//成功將1存入session中
			return "/user/index";
		}else {
			return "index";
		}
	
	@RequestMapping("user_logout")
	public String logout(@ModelAttribute("User") User user, SessionStatus sessionStatus){	
		//@ModelAttribute("User")相當於將session中名為"User"的物件注入user物件中
		//sessionStatus中的setComplete方法可以將session中的內容全部清空
		sessionStatus.setComplete();
		return "index";
	}
}
User類的程式碼:
public class User {
    private Integer id;

    private String name;

    private String password;

    private String email;

    private String activecode;

    private Integer state;

  //省略set和get方法
}
總結:

如果用@SessionAttributes註解的話,博主暫時沒有找出好方法可以單獨刪除session中的一個物件,即便是在action中傳入引數HttpSession依然是隻能獲得session中的內容,無法刪除,如果大家找到好辦法能解決這個問題,還望能在評論中留下解決方法或者聯絡方式,博主將感激不盡!!