日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

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

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

  • 博客分類:?
  • java
JavaApacheStrutsTomcatServlet? 用戶第一次登陸,可以登陸,點退出,調(diào)用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)?


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

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



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

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。