Wie gewaltsam erstellen Sie eine neue session in Java-Servlets

Ich bin die Speicherung von session-ids in der Datenbank an log in Zeit. Das problem, das ich konfrontiert ist, dass, wenn ein anderer Benutzer sich anmeldet, nach dem ersten, in derselben Sitzung ist eingetragen in der DB und welcome username noch spiegelt der name des einen, wer sich angemeldet hat zuerst, auf der gleichen Maschine. Ich will erstellen Sie eine neue session-id jedes mal, wenn ein Benutzer sich anmeldet, aber irgendwie scheint mein code nicht funktioniert.

HttpSession session = request.getSession();
String sessionID;
request.getSession(true);
sessionID = session.getId();

Hinweis: der obige code aufgerufen wird, wenn der Benutzer klicken Sie auf Login-button und den darin enthaltenen in einem servlet.

session-ID hat immer noch den alten Wert von session bis der alte abläuft standardmäßig. Das bedeutet, wenn 10 Benutzer meldet sich an, alle haben gleiche session-id und der gleichen herzlich willkommen name.

Brauchen kompetente Beratung von gurus hier:). Lassen Sie mich wissen, wenn ich bin, verpassen Sie keine details, die gestellt werden müssen.

Wenn ich -

if(session.isNew()){
            System.out.println("New session created by default");
            request.getSession(true);
            sessionID = session.getId();
            createTime = new Date(session.getCreationTime());
            lastAccessTime = new Date(session.getLastAccessedTime());
            initialtime = System.currentTimeMillis();
        }else{
            System.out.println("You have created a new session");
            request.getSession().invalidate();
            request.getSession(true);
               sessionID = session.getId();
            createTime = new Date(session.getCreationTime());
            lastAccessTime = new Date(session.getLastAccessedTime());
            initialtime = System.currentTimeMillis();
         }

bekomme die folgende exception -

SEVERE: Servlet.service() for servlet LoginToApp threw exception
java.lang.IllegalStateException: getCreationTime: Session already invalidated
    at org.apache.catalina.session.StandardSession.getCreationTime(StandardSession.java:1025)
    at org.apache.catalina.session.StandardSessionFacade.getCreationTime(StandardSessionFacade.java:74)
    at LoginToApp.doGet(LoginToApp.java:56)
    at LoginToApp.doPost(LoginToApp.java:208)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:843)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:679)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1303)
    at java.lang.Thread.run(Thread.java:595)
  • Ich würde sagen, Ihr logout kaputt ist, dann. Oder Ihr login ein. Oder beides.
  • Ich glaube nicht, Dave.Login ist nur eine html-Seite und alles, was behandelt wird in der servlet-hier.
  • Wirklich? Hmm. Da normalerweise bei der Abmeldung würden Sie ungültig die aktuelle Sitzung (oder auf login, wenn Sie nicht auf Abmelden, oder Sie sollten führen Sie einfach den logout-code). Aber die session-ID ist nicht wirklich das gating Problem--was in der session ist das wichtigste. Und wenn Sie haben noch alte Daten in der session oder in der Datenbank, entweder Ihr login oder logout, ist kaputt (oder beides).
  • Dave, fügte hinzu, mehr details in Frage zu stellen. Ich bin einverstanden mit Ihrem invalidate, bekomme aber die oben genannten Ausnahme. Ich bin nicht Abmelden. Einfach einloggen und wenn neue user sich einloggen will, klickt er erneut Einloggen.
InformationsquelleAutor anujin | 2012-08-09
Schreibe einen Kommentar