gpt4 book ai didi

java - Struts2 拦截器跟踪 session 超时前的最后一页

转载 作者:行者123 更新时间:2023-12-01 15:11:22 25 4
gpt4 key购买 nike

我有一个网络应用程序,如果用户 session 超时并且他们尝试再次登录,我需要将他们重定向到上次访问的页面。仅适用于 session 超时,如果用户注销,我不需要此映射。

我知道可以使用拦截器和应用程序范围映射来完成。但是你能给我一个更新当前用户 URL 的拦截器的代码示例吗?还有我的应用程序范围对象..在 5 小时没有重新登录后我该怎么说删除对该用户最后一页的引用???

最佳答案

注册一个 HttpSessionListener 怎么样(看看这个 answer )。这样,当 session 被销毁时,您将收到通知,因此这是您将上次访问页面的信息保存到数据库的最佳时机。

您的 session 监听器应如下所示:

package com.rr87;

import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

public class YourSessionListener implements HttpSessionListener {
@Override
public void sessionDestroyed(HttpSessionEvent event) {
// Implement logic to save last visited page to database...
}
.
.
.
}

要注册您的 session 监听器,请将以下代码添加到您的 Web.xml 中:

<web-app ...>
<listener>
<listener-class>com.rr87.YourSessionListener</listener-class>
</listener>
</web-app>

答案的最后一部分..您可以在成功注销后删除数据库中上次访问的页面引用。

[编辑]

根据官方文档,关于通过 HttpSessionEvent 访问 session 对象:

The container creates a javax.servlet.http.HttpSessionEvent object that is input for calls to HttpSessionListener methods. The HttpSessionEvent class includes the following method, which your listener can call:

HttpSession getSession()

Use this method to retrieve the session object that was created or destroyed, from which you can obtain information as desired. See "Introduction to Servlet Sessions" for information about the javax.servlet.http.HttpSession interface.

基于此,我认为您仍然可以从“已破坏的” session 中获取数据。

关于java - Struts2 拦截器跟踪 session 超时前的最后一页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12305971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com