Java 会话超时后如何重定向到页面?

Java 会话超时后如何重定向到页面?,java,session,session-timeout,Java,Session,Session Timeout,我有两个领域的Java web应用程序:公共和私有。我已经为这两个区域配置了会话超时。会话超时后,我需要重定向到另一个页面 如果会话超时来自公共区域,我需要重定向到主页,如果会话超时来自私人区域,我需要重定向到另一个页面,并显示消息“您的会话已超时!! 我怎么做呢?我不知道您使用的是什么库或框架,但一般来说,您可以使用Observer模式在Java中模拟事件: 您的重定向逻辑将是Observer,您在会话逻辑中注册它,并在会话发生某些事情时通知它。我建议您为此创建HTTP筛选器。此筛选器映射到站

我有两个领域的Java web应用程序:公共和私有。我已经为这两个区域配置了会话超时。会话超时后,我需要重定向到另一个页面

如果会话超时来自公共区域,我需要重定向到主页,如果会话超时来自私人区域,我需要重定向到另一个页面,并显示消息“您的会话已超时!!
我怎么做呢?

我不知道您使用的是什么库或框架,但一般来说,您可以使用Observer模式在Java中模拟事件:


您的重定向逻辑将是Observer,您在会话逻辑中注册它,并在会话发生某些事情时通知它。

我建议您为此创建HTTP筛选器。此筛选器映射到站点的专用区域,并执行以下操作:

检查会话是否已过期HttpServletRequest.getSessionfalse 如果过期,将用户重定向到登录页面。 如果在DD中配置了HttpSessionListener侦听器,则将调用HttpSessionListenersessionDestroyed


您可以基于此方法调用执行此操作。

类似于我已经有了一个公用和专用区域的公用筛选器。当前在该筛选器中,我将在会话超时时重定向到单个页面。我如何区分公共区域和私有区域,然后重定向到各自的页面?我建议您使用不同的URL进行此操作。例如,将ll public资源放在public目录下,将all private放在private目录下。然后仅使用web.xml中的筛选器映射标记将筛选器映射到私有目录。您可以继续使用筛选器。。。使用requestgetRequestURI测试URI是否匹配公共或私有页面的URI,并进行适当的重定向。@LucasOliveira,编程过滤也很好,但IMHO声明性解决方案更具模块化,并允许更好的代码重用。@在我的例子中,我不想更改URL,因为它已经在谷歌的跟踪下了。还有别的办法吗?