我必須開發一個Web應用程序,其中用戶在登錄頁面中輸入的值由多個jsp頁面使用。因此,我使用了會話。它在我註冊爲一個用戶並重新登錄。但是,一旦我重新啓動計算機,它會在session.getAttribute()中顯示空值。可能是什麼問題?jsp中的會話似乎無法正常工作
這裏是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()的代碼訪問session.getAttribute
out.println("<h1 align=center>Welcome "+session.getAttribute("username")+"</h1>");
那麼,但會話將再次爲新的jsp請求創建?並且我在session.setAttribute()中再次設置這些值.... Iam仍然無法訪問。我剛剛注意到這是重新啓動後第一次登錄嘗試....一旦我註銷並再次登錄它正常工作 –
沒錯,會話包含在客戶端發送的請求中。 如果我說得對,您重新啓動機器,嘗試訪問該頁面並要求您提供登錄憑據?然後,當你提供(即登錄),它從那裏順利運行? 如果是這樣,這是完全正常的,因爲正如我在上面的回答中提到的那樣,會話具有無常性,並在重新啓動機器時被刪除。 – solstinger
一旦我給了登錄憑證......它在我重新啓動(或關閉並打開瀏覽器)後第一次顯示會話值爲null,並且在我登錄後再次登錄 –