日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用户登陆问题,session.invalidate销毁session

發布時間:2023/12/14 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用户登陆问题,session.invalidate销毁session 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用戶登陸問題,session.invalidate銷毀session

  • 博客分類:?
  • java
JavaApacheStrutsTomcatServlet? 用戶第一次登陸,可以登陸,點退出,調用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)?
??? at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)?
??? at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)?
??? at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)?
??? at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)?
??? at struts.form.FilterEncoding.doFilter(FilterEncoding.java:51)?
??? at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)?
??? at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)?
??? at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)?
??? at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)?
??? at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)?
??? at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)?
??? at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)?
??? at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)?
??? at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)?
??? at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
??? at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)?
??? at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)?
??? at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)?
??? at java.lang.Thread.run(Thread.java:595)?


這個原因我一開始還以為是超時了什么的呢,后來經測試才知道,是因為用了session.invalidate(),session.invalidate的銷毀是把這個session所帶的用戶徹底的銷毀,這個session跟用戶已經緊密聯合在一起,所以就一起銷毀了,這樣就算換了個session,也是登陸不了的,以前我的代碼就是這樣寫的,下面:?

Java代碼??
  • ((HttpSession)?sc.getAttribute(userName)).invalidate();//?清除第一次登陸的session???



  • 這樣銷毀的可是userName啊,所以要注意,銷毀session的時候絕對不能用這種形式,可以用下面的銷毀來控制用戶沒有登陸的話不可以瀏覽網頁和后退也不能進行操作,把上邊的代碼改成下邊的一句就搞定:?
    ???????? Java代碼??
  • session.removeAttribute("sessionUserName");??
  • 移除用戶,但session不變,下次登陸的時候看到的sessionID還是一樣的?

    總結

    以上是生活随笔為你收集整理的用户登陆问题,session.invalidate销毁session的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。