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中的内容,无法删除,如果大家找到好办法能解决这个问题,还望能在评论中留下解决方法或者联系方式,博主将感激不尽!!