【发布时间】:2015-02-19 13:04:33
【问题描述】:
我有两个领域的 Java Web 应用程序:公共和私有。我已经为这两个区域配置了会话超时。会话超时后,我需要重定向到另一个页面。
如果会话超时来自公共区域,我需要重定向到主页,如果会话超时来自私人区域,我需要重定向到另一个页面,并显示消息“您的会话已超时!” 我该怎么做?
【问题讨论】:
标签: java session session-timeout
我有两个领域的 Java Web 应用程序:公共和私有。我已经为这两个区域配置了会话超时。会话超时后,我需要重定向到另一个页面。
如果会话超时来自公共区域,我需要重定向到主页,如果会话超时来自私人区域,我需要重定向到另一个页面,并显示消息“您的会话已超时!” 我该怎么做?
【问题讨论】:
标签: java session session-timeout
我不知道你使用什么库或框架,但总的来说,你可以使用观察者模式在 Java 中模拟事件:http://en.wikipedia.org/wiki/Observer_pattern
您的“重定向”逻辑将是观察者,您在会话逻辑中注册它,并在会话发生某些事情时通知它。
【讨论】:
我建议您为此创建 HTTP 过滤器。此过滤器映射到您网站的私有区域并执行以下操作:
HttpServletRequest.getSession(false)
【讨论】:
public 目录下,将所有私有资源放在private 目录下。然后仅使用web.xml 中的filter-mapping 标记将您的过滤器映射到私有目录。
如果您在 DD 中配置了 HttpSessionListener 侦听器,则会调用HttpSessionListener#sessionDestroyed()。
你可以做基于这个方法的调用。
【讨论】: