繁体   English   中英

JSP会话失效不起作用

[英]JSP session invalidation doesn't work

我有3个JSP文件:login.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的servlet

...
        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本地主机Windows 7上的Tomcat

当我启动项目(运行/运行项目)时,它总是重定向到logout.jsp。 sesId和userName是否为空(或为空?)

为什么?

除非明确配置,否则JSP会创建会话。

取而代之的检查会话的值会话确认的存在。

除非用户禁用了cookie,否则会话对象本身不会为空(即使那时我认为它不会为null)。 您需要检查null属性。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM