【session】java.lang.IllegalStateException: getAttribute: Session already invalidated
2017-09-12 10:56
417 查看
1、问题定位:
在执行
/**
* 设置用户到session
*
* @param session
* @param user
*/
public static void saveUserToSession(HttpSession session, User user) {
session.setAttribute(USER, user);
}
session.setAttribute(USER, user)方法时会报这个异常
2、原因:
从Session中获取属性值的时候,Session已经无效
失效原因:
(1)Session timeout;
(2)程序中调用了session.invalidate()方法(设置session无效)
发现在之前执行了session.invalidate()操作,重新设置session。如果想给session重新赋值,需要将session
失效。
// 设置session无效
session.invalidate();
// 获取用户名
UserEntity userEntity = new UserEntity();
userEntity.setId(userName);
UserUtil.saveUserToSession(session, userEntity);
解决办法:
重新获取session,赋值
UserUtil.saveUserToSession(request.getSession(), userEntity);
注意:
getSession()相当于getSession(true);
参数为true时,若存在会话,则返回该会话,否则新建一个会话;
参数为false时,如存在会话,则返回该会话,否则返回NULL;
3、场景
session.invalidate()方法一般用于在用户退出注销的时候,设置缓存失效。
如果同一个用户打开多个浏览器实例,此时处于同一个session会话中。如果其中一个浏览器实例执行了退出注销操作,另外的浏览器实例如果在执行录入的操作,则会异常
在执行
/**
* 设置用户到session
*
* @param session
* @param user
*/
public static void saveUserToSession(HttpSession session, User user) {
session.setAttribute(USER, user);
}
session.setAttribute(USER, user)方法时会报这个异常
2、原因:
从Session中获取属性值的时候,Session已经无效
失效原因:
(1)Session timeout;
(2)程序中调用了session.invalidate()方法(设置session无效)
发现在之前执行了session.invalidate()操作,重新设置session。如果想给session重新赋值,需要将session
失效。
// 设置session无效
session.invalidate();
// 获取用户名
UserEntity userEntity = new UserEntity();
userEntity.setId(userName);
UserUtil.saveUserToSession(session, userEntity);
解决办法:
重新获取session,赋值
UserUtil.saveUserToSession(request.getSession(), userEntity);
注意:
getSession()相当于getSession(true);
参数为true时,若存在会话,则返回该会话,否则新建一个会话;
参数为false时,如存在会话,则返回该会话,否则返回NULL;
3、场景
session.invalidate()方法一般用于在用户退出注销的时候,设置缓存失效。
如果同一个用户打开多个浏览器实例,此时处于同一个session会话中。如果其中一个浏览器实例执行了退出注销操作,另外的浏览器实例如果在执行录入的操作,则会异常
相关文章推荐
- 对异常 java.lang.IllegalStateException: getAttribute: Session already invalidated的理解
- org.apache.shiro.session.InvalidSessionException: java.lang.IllegalStateException: getAttribute: Session already invalidated] with root cause
- 对异常 java.lang.IllegalStateException: getAttribute: Session already invalidated的理解
- java.lang.IllegalStateException: getAttribute: Session already invalidated
- java.lang.IllegalStateException: getAttribute: Session already invalidated
- 对异常 java.lang.IllegalStateException: getAttribute: Session already invalidated的理解 .
- 对异常 java.lang.IllegalStateException: getAttribute: Session already invalidated的理解
- 处理异常getAttribute: Session already invalidated
- java.lang.IllegalStateException: The specified child already has a parent. You must call removeView
- java.lang.IllegalStateException: getOutputStream() has already been called for this response
- mark一下android异常 java.lang.IllegalStateException: The specified child already has a parent. You must
- java.lang.Exception: Socket bind failed: [730048] Address already in use: JVM_Bind
- java.lang.IllegalStateException: Web app root system property already set to different value .
- java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Sessio
- java.lang.IllegalThreadStateException: Thread already started.
- SessionFactoryImpl.get错误:java.lang.ArrayIndexOutOfBoundsException: -68问题
- 异常:java.lang.IllegalStateException: Fragment already active
- java.lang.IllegalStateException:Cannot add header view to list==setAdapter has already been called.
- Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the
- Spring 4.0 StandaloneMockMvcBuilder java.lang.NoClassDefFoundError: javax/servlet/SessionCookieConfi