2017-04-13 2 views
0

Ich muss eine Webanwendung entwickeln, wo die Werte Benutzereingaben auf der Anmeldeseite von mehr als einer JSP-Seite verwendet werden. Also habe ich Sitzungen dafür verwendet. Es funktioniert gut, wenn ich als registrieren ein Benutzer und wieder anmelden. Sobald ich den Computer neu starte, zeigt es in session.getAttribute() Null-Wert. Was könnte das Problem sein?Sitzungen in Jsp scheint nicht richtig zu funktionieren

hier ist der Code in login.jsp

try{ 
    Class.forName("com.mysql.jdbc.Driver"); 
    con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/vaishnavi","root","atreyasa"); 

    name=request.getParameter("username"); 
    password=request.getParameter("password"); 

    st=con.createStatement(); 
    st1=con.createStatement(); 

    rs=st.executeQuery("select * from admins where username='"+name+"' and password='"+password+"'"); 
    rs1=st1.executeQuery("select * from admins where username='"+name+"' and password!='"+password+"'"); 

    if(rs!=null&&rs.next()){ 
     session.setAttribute("username",name); 
     response.sendRedirect("http://127.0.0.1:8080/Project_programs/home.jsp"); 
    } 
    else if(rs1!=null&&rs.next()){ 
     out.println("Enter correct password"); 
    } 
    else{ 
    response.sendRedirect("http://127.0.0.1:8080/Project_programs/register.jsp"); 
    } 
} 
catch(Exception e){ 
    out.println(e); 
} 

Home.jsp die session.getAttribute Zugriffe()

out.println("<h1 align=center>Welcome "+session.getAttribute("username")+"</h1>"); 

Antwort

0

Wie Sie bemerkt haben, wird die gelöscht, nachdem Sie Ihren Rechner neu gestartet haben. Dies liegt an der vorübergehenden Natur der session Eigenschaft. Es wird im Speicher gespeichert. Wenn Sie Ihren Computer neu starten, wird er gelöscht.

Die Lösung hier ist cookies zu verwenden. Cookies sind kleine Datenstücke, die auf dem Computer des Kunden gespeichert sind und mit jeder Anfrage eines Kunden gesendet werden. Also, wenn ein Benutzer eine Seite anfordert, können Sie überprüfen, ob er eine cookie hat, und wenn er dies tut, dann können Sie die Daten aus dem Cookie lesen und ihn anmelden, ohne dass er die Anmeldeinformationen erneut eingeben muss.

Einstellung Cookies mit Servlet umfasst drei Schritte:

(1) Erstellen eines Cookie-Objekt: Sie rufen den Cookie-Konstruktor mit einem Cookie-Namen und ein Cookie-Wert, von denen beide Strings sind.

Cookie cookie = new Cookie("key","value"); 

Denken Sie daran, weder der Name noch der Wert Leerzeichen oder einem der folgenden Zeichen enthalten: []() = "/ @:;?

(2) Einstellen der maximalen Alter:. Sie setMaxAge verwenden, um festzulegen, wie lange (in Sekunden) das Cookie gültig sein sollte folgend würde ein Cookie für 24 Stunden einrichten

cookie.setMaxAge(60*60*24); 

(3) Senden des Cookies in die HTTP-Antwort-Header. Sie verwenden response.addCookie zum Hinzufügen von Cookies im HTTP-Antwortheader als folgt:

response.addCookie(cookie); 

Das speichert den Cookie auf dem Computer des Clients, wenn er die Antwort empfängt.

Sie können https://www.tutorialspoint.com/servlets/servlets-cookies-handling.htm

Best, Jovan eine ausführlichere Anleitung über Cookies lesen.

+0

Nun, aber Sitzung wird wieder für die neue Jsp Anfrage Rignt erstellt werden? und ich setze diese Werte erneut in der session.setAttribute() .... Ich bin immer noch nicht in der Lage zu greifen. Auch habe ich gerade gemerkt, dass dies für den ersten Login-Versuch nach dem Neustart .... Sobald ich mich abmelde und wieder einloggen funktioniert gut –

+0

Das ist richtig, eine Sitzung ist in der Anfrage enthalten, die ein Client sendet. Wenn ich es richtig verstanden habe, starten Sie Ihren Computer neu, versuchen Sie, auf die Seite zuzugreifen, und Sie werden nach Ihren Anmeldeinformationen gefragt? Dann, wenn Sie bereitstellen (d.h.login) läuft es von da an reibungslos? Wenn das so ist, ist es vollkommen normal, da die Sitzung, wie ich in meiner Antwort erwähnte, von unbeständiger Natur ist und beim Neustart der Maschine entfernt wird. – solstinger

+0

Gut, sobald ich die Login-Credentials ... es zeigt Sitzungswert Null zum ersten Mal nach dem Neustart (oder schließen und öffnen Sie den Browser) und funktioniert, wenn ich wieder danach anmelden –

0

Sie diesen Code verwenden können Sitzung erstellen.

+0

Aber Sitzung ist ein implizites Objekt richtig? Was ist die Notwendigkeit, es wieder zu erstellen? –

Verwandte Themen