2017-08-15 4 views
1

Für eine Instanz haben wir Login-Seite. Wir erstellen eine Sitzung und fügen unseren Text an sie an. Ich versuche alte Sitzung und neue Sitzung zu vergleichen. setzen, LetsVergleiche neue und alte Sitzung

1) Benutzeranmeldung mit Test // wenn falsches Passwort, wird es umleiten zurück zur Login-Seite und „test“ zu Sitzung

2) anhängen Aber wenn Benutzeranmeldung mit unterschiedlichen Benutzernamen auf dem zweiten Versuch // Ich möchte es an eine neue Sitzung anhängen und es mit der alten Sitzung vergleichen. Lassen Sie uns sagen ,,

if(session1 is not equal to session 2){ 
    restart attempt incremental 
} else if (session1 is to session 1){ 
    increment attempt to -1 
} 

Lässt es ausdrückte, dass unsere jsp Datei

<form action="servlet" method="post"> 
<input type="text" name="username"> 
</form> 

In unserem Servlet-Datei

doPost(HttpSe....){ 
//Get Parameter 
String name = request.getParameter("username"); 

//Create session 
HttpSession session = request.getSession(true); 
session.setAttribute("username", name); 
String session_name = (String)session.getParameter("username"); 

//validate if username is = test, it will redirect 

if(name.equal("test")){ 
    //this will redirect to different page 
} else if(session_name.equals(name)){ 
    //do something.. 
} else { 
//do something... 
} 

wie folgt Ich muss nur alte Sitzung und neue Sitzung vergleichen .

Ich habe versucht, mit (session.isNew()), aber es funktioniert nicht, es wird umgeleitet mich immer zu else-Anweisung ..

Dies ist mein eigentlicher Code

HttpSession session = request.getSession(true); 
     HttpSession session_Newusername = request.getSession(true); 
     session.setAttribute("Username", username); 
     String session_Username = (String)session.getAttribute("Username"); 
     System.out.println(" data .... " + session_Username); 

     int loginAttempt; 
      if(session.getAttribute("loginCount") == null){ 
       session.setAttribute("loginCount", 0); 
       loginAttempt = 0; 
      } else if(session.isNew()) { 
       System.out.println("If user key in same username"); 
       loginAttempt = (Integer)session.getAttribute("loginCount"); 
       if(loginAttempt == 3){ 
        session.setMaxInactiveInterval(5); 
        session.setAttribute("message", "Your account is blocked, Please contact admin or wait for 2mins"); 
        //System.out.println(session.getAttribute("message")); 
        response.sendRedirect("Pages/Login/login.jsp"); 
       } else { 
        System.out.println("How many attempt left " + loginAttempt); 
        loginAttempt++; 
        int leftAttempt = 4 - loginAttempt; 
        session.setAttribute("message", "You are left with " + leftAttempt + " attempt"); 
        //System.out.println(session.getAttribute("message")); 
        response.sendRedirect("Pages/Login/login.jsp"); 
       } 
       session.setAttribute("loginCount", loginAttempt); 
      } else { 
       response.sendRedirect("Pages/Login/login.jsp"); 
       System.out.println("username is not the same"); 
       session.invalidate(); 
      } 

    } 
+0

so was ist Ihre Frage? –

+0

Ich möchte einen neuen Wert in einer neuen Sitzung speichern und ihn mit dem alten Wert in derselben Sitzung vergleichen. –

+0

Vertausche die Werte, damit du einfach neue Werte speichern und mit anderen vergleichen kannst. – Tehmina

Antwort

0

Wenn vorherige Sitzung Invalidiert (zB nach Timeout geschlossen) werden die Session-Attribute zerstört. Sie können also diese Attribute nicht hinzufügen und versuchen, sie von der bereits ungültigen früheren Sitzung abzurufen. Sie können nur innerhalb derselben aktiven Sitzung darauf zugreifen.

So können Sie nicht erreichen, was Sie auf diese Weise wollen. Sie müssen Ihre Daten irgendwo anders speichern, zum Beispiel im Datenbank- oder JVM-Speicher. Aber nicht in Sitzungsattributen.

Wenn Sie in der gleichen aktiven Sitzung, um zu bestimmen, dann müssen Sie Anwesenheit von userName Attribute in der aktuellen Sitzung prüfen und dann handeln, wie Sie wollen:

userName = (String) session.getAttribute("userName"); 
if (userName == null) { 
    // here you don't have it from previous invocation of setAttribute 
    session.setAttribute("userName", login); 
} else { 
    // you already setAttribute from previous invocation on current session 
    // add you errors here 
} 
Verwandte Themen