用户登陆问题,session.invalidate销毁session
生活随笔
收集整理的這篇文章主要介紹了
用户登陆问题,session.invalidate销毁session
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
用戶登陸問題,session.invalidate銷毀session
- 博客分類:?
- java
全部異常為:?
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代碼??
這樣銷毀的可是userName啊,所以要注意,銷毀session的時候絕對不能用這種形式,可以用下面的銷毀來控制用戶沒有登陸的話不可以瀏覽網頁和后退也不能進行操作,把上邊的代碼改成下邊的一句就搞定:?
???????? Java代碼??
總結
以上是生活随笔為你收集整理的用户登陆问题,session.invalidate销毁session的全部內容,希望文章能夠幫你解決所遇到的問題。