[转帖]session注销的一些方法  _MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 1928 | 回复: 0   主题: [转帖]session注销的一些方法          下一篇 
napolenAx
注册用户
等级:少校
经验:802
发帖:118
精华:1
注册:2011-8-30
状态:离线
发送短消息息给napolenAx 加好友    发送短消息息给napolenAx 发消息
发表于: IP:您无权察看 2014-12-29 17:53:42 | [全部帖] [楼主帖] 楼主

用户第一次登陆,可以登陆,点退出,调用session.invalidate,然后再次登陆,正常登陆,然后再点退出,这是第二次点退出第三次进行登陆,这时在登陆的时候就会报错了,java.lang.IllegalStateException: invalidate: Session already invalidated
全部异常为:

2007-12-24 15:56:00 org.apache.catalina.core.StandardWrapperValve invoke


严重: Servlet.service() for servlet action threw exception

java.lang.IllegalStateException: invalidate: Session already invalidated
at org.apache.catalina.session.StandardSession.invalidate(StandardSession.java:1086)
at org.apache.catalina.session.StandardSessionFacade.invalidate(StandardSessionFacade.java:149)
at struts.form.SessionDestroy.setSession(SessionDestroy.java:34)
at struts.form.UserLoginForm.validate(UserLoginForm.java:41)
at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:928)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
。。。。。。


这个原因我一开始还以为是超时了什么的呢,后来经测试才知道,是因为用了session.invalidate(),session.invalidate的销毁是把这个session所带的用户彻底的销毁,这个session跟用户已经紧密联合在一起,所以就一起销毁了,这样就算换了个session,也是登陆不了的,以前我的代码就是这样写的,下面:

Java代码  收藏代码

((HttpSession) sc.getAttribute(userName)).invalidate();// 清除第一次登陆的session  


这样销毁的可是userName啊,所以要注意,销毁session的时候绝对不能用这种形式,可以用下面的销毁来控制用户没有登陆的话不可以浏览网页和后退也不能进行操作,把上边的代码改成下边的一句就搞定:

Java代码  收藏代码

session.removeAttribute("sessionUserName");


移除用户,但session不变,下次登陆的时候看到的sessionID还是一样的
2、

// args为你要清空的session对象 Object object = request.getSession().getAttribute(args);   if (object != null) {    try {     request.getSession().removeAttribute(args);    } catch (Exception e) {     object = null;    }   }
3、


使用程序清空SESSION:

清空Session:

Session.Abandon()


清空   Session   中所有的内容

Session.RemoveAdd()


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论