2014-02-18 9 views
1

У меня есть 3 JSP файлы: Login.jsp:JSP сессия недействительности не работает

... 
    <body> 
     <font face="tahoma" size="2"> 
     <form action="log" METHOD="POST"> 
      <p>login:</p> 
      <input type="text" name=login value="person" />  
      <p>password:</p> 
      <input type="password" name=password value="" /> 
      <input type="submit" name="next" value="OK" /> 
     </font>             
    </body> 
..... 

logout.jsp

... 
    <body> 
     <font face="tahoma" size="2"> 
     session id : ${sessionScope.sesId}</p>  
     user : ${sessionScope.userName}</p> 
    <h3>Logout page</h3> 
     <form action="logout" METHOD="POST"> 
      <input type="submit" name="in" value="log in again" /> 
     </font>             
    </body> 
.... 

logged.jsp

.... 
.... 

и сервлетов для login.jsp

... 
     HttpSession ses = request.getSession(false);    
     if (ses == null) {     
      ses = request.getSession();    
      ses.setAttribute("userName", login); 
      ses.setAttribute("sesId", ses.getId()); 
      request.getRequestDispatcher("/logged.jsp").forward(request,response);      
     }else { 
      ses.invalidate();         
      request.getRequestDispatcher("/logout.jsp").forward(request,response);      
     } 
... 

NetBeansIDE 7,4 Tomcat на локальном хосте Windows 7

Когда я начинаю проект (Run/Run Project) это ВСЕГДА перенаправлять logout.jsp. sesId и userName являются нулевыми (или пустыми?)

Почему?

+0

Потому что ses не является нулевым, по-видимому. Вероятно, вы захотите расширить сеанс проверки, если ses не является нулевым или что сеанс не содержит атрибут sesId. – Gimby

ответ

1

Сам объект сеанса не будет иметь значение null, если, возможно, пользователь не отключил cookies (даже тогда я не думаю, что это будет null). Вам нужно проверить атрибут вместо нуля.

String username = (String)ses.getAttribute("userName"); 
    if(username == null) 
2

JSPs создать сеанс, если явно не настроен не.

Вместо проверки наличия проверки сеанса на значение в сеанс.