重新获取了session为什么还有getAttribute: 
Session already invalidated 这个错误
重新获取了session为什么还有getAttribute: Session already invalidated 这个错误
我写了一个LoginAction,登录的时候执行login方法,
问题是,第一次登录可以正常登录,但是将原来的页面关了,浏览器不关,再登录的时候就报错说getAttribute: Session already invalidated 
我里面用了session.invalidate();注销了session,但是接着我也重新获取了session啊,而且在后台显示可以一直执行到最下面,求各位大神帮忙啊,都纠结了几天了,百度也搜了不少,他们说的情况和我的有点不一样
谢谢各位了
代码如下	
	public String login() {
		String userid = user.getUserid();
		String mima = user.getPassword();
		UserDTO user = null;
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		session=request.getSession();
		System.out.println(session.getId());
		user = (UserDTO) session.getAttribute("USER_INFO");		
if (user != null) {
			session.invalidate();
			session = request.getSession(true);
		}		try {
			user = userService.getUserByUserid(userid);
		} catch (Exception e) {
			request.setAttribute("login_error", "无此用户");			
			e.printStackTrace();
			return "login_error";
		}
		if (user == null) {
			request.setAttribute("login_error", "用户不存在或密码错误!");
			return "login_error";
		}
		if (user.getPassword().equals(mima)) {	
			user.setOnlineflag("1");
			userService.updateUser(user);			
			session.setAttribute("USER_INFO", user);					
			long endTime = System.currentTimeMillis();
			//logger.info("init耗时()" + (endTime - startTime) + "毫秒");
			System.out.println("++++++++++执行到这里");
			return "login_ok";
		} // 用户名和密码核对正确
		else {
			request.setAttribute("login_error", "用户不存在或密码错误");
			return "login_error";
		}
	}	
	/**
	 *@功能描述:
	 *@param request
	 *
	 */
	public void setServletRequest(HttpServletRequest request) {
		// TODO Auto-generated method stub
		this.request=request;
		this.session=request.getSession();		
	}
	public UserDTO getUser() {
		return user;
	}
	public void setUser(UserDTO user) {
		this.user = user;
	}	
}
------解决方案--------------------session = request.getSession(true);
-->
session = request.getSession(false);
------解决方案--------------------检查一下在哪行报的异常,在那里个位置前面输出一下sessionID,看与
session.invalidate();
session = request.getSession(true);
这两句前后的sessionID一样不。
------解决方案--------------------这两句前后的sessionID一样不。
------解决方案--------------------session = request.getSession(true);
应该和这句有关系。
invalidate();并不是失效。而是使session和现有的对象解绑定。但session还是原来的session.
------解决方案--------------------应该不要注销那session,
------解决方案--------------------
session.invalidate();不知道你为什么要将整个session都销毁。。。
注销用户,只需要移除你当前用户的不就可以了吗?
session.removeAttribute("USER_INFO");
------解决方案--------------------
其实getAttribute: Session already invalidated 都已经全告诉你了;
你注销了session,当你用注销了的session来获取attribute时(只要是在session有效的范围内),肯定出错了;
要解决这个问题,
就是在所有调用了session.getAttribute()前,使用session=request.getSession(true);
------解决方案--------------------这个说法我同意