JSP页面和Servlet报告不同的会话ID

时间:2010-08-05 20:19:56

标签: java jsp session servlets

我在JSP页面中设置了一个包含一些数据的bean,但是当我尝试访问该值时,在我的servlet中,我得到一个null值。我在两个页面中打印了会话ID,但我得到了不同的值。有谁知道可能会发生什么?感谢。

2 个答案:

答案 0 :(得分:1)

我最好的猜测是你的会话在某处失效。如果你的代码中某处有session.invalidate()个语句,那么在那里放置断点并在调试模式下验证它们是否被击中。

您还可以在项目中实施和设置HttpSessionListener。实现回调接口并将实现类添加到web.xml

<listener>
    <listener-class>com.xyz.AppSessionListener</listener-class>
</listener>

sessionDestroyed方法中放置一个断点,看看它何时在调试模式下被击中。

答案 1 :(得分:0)

我没注意到你为此开了一个新问题。您previous question的评论已回答了此问题。以下是相关摘录:

  

会话取决于域和上下文。如果servlet侦听与JSP不同的域和/或上下文的URL,那么它确实会使用不同的会话。但是,您可以通过相应地配置servletcontainer来让不同的上下文共享同一个会话(在Tomcat中,将emptySessionPath的{​​{1}}属性设置为<Connector>)。但由于HTTP规范中的安全限制,您无法在不同域之间共享会话。

另一个原因确实是您通过HttpSession#invalidate()明确地使会话无效,但这在您的代码中显而易见。