gpt4 book ai didi

java - 没有在 HttpSessionListener 的 sessionDestroyed() 方法中获取 session 属性

转载 作者:行者123 更新时间:2023-11-29 09:30:24 26 4
gpt4 key购买 nike

我用 google 和 stackoverflow 搜索了很多,但无法让它工作。这是我的代码。我在 subscribe 方法中设置了一个 session 属性“topic”,但在 sessionDestroyed 中我将其设置为 null。 This question在 SO 上似乎与我相关,但没有解决问题。

@Path("/jpubsub/{topic}")
public class JMSSubscribe implements HttpSessionListener, ServletContextListener, MessageListener, ExceptionListener {

@GET
public subscribe(@javax.ws.rs.core.Context HttpServletRequest request) {
HttpSession session = request.getSession();
session.setAttribute("topic", "1");
}

@Override
public void sessionCreated(HttpSessionEvent hse) {
HttpSession session = hse.getSession();
System.out.println("Created Session - ID : " + session.getId());
}

@Override
public void sessionDestroyed(HttpSessionEvent hse) {
System.out.println("Destroyed Session - ID : " + hse.getSession().getId());
System.out.println("Topic ID sessionDestroyed - " + hse.getSession().getAttribute("topic"));
}

请帮忙。

PS:当我在 sessionCreated() 中设置属性时,我在 sessionDestroyed() 中获取它。是因为我使用不同的 session 对象吗?另外,当我打印 session ID 时。我在所有 3 种方法中都获得了相同的 session ID。

请询问是否需要任何其他代码。

最佳答案

调用sessionDestroyed() 后, session 中的所有对象都已被清除。因此,你得到空值。相反,您应该实现 HttpSessionBindingListener界面。

并且不要使用原始字符串对象存储在 session 中,而是创建一个实现上述接口(interface)的简单对象。当它从 session 中解除绑定(bind)(删除)时,您将获得该值。假设没有其他人删除它,它只会在 session 实际销毁之前被调用。

关于java - 没有在 HttpSessionListener 的 sessionDestroyed() 方法中获取 session 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19046976/

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