http会话在request.sendRedirect之后丢失该属性

时间:2012-11-15 22:48:53

标签: java

内部过滤器我试图将一个属性设置为当前的http会话。然后我使用response.sendRedirect()重定向到另一个资源。资源将请求发送回过滤器。第二次会话丢失会话属性。

请提供一些指针。

第一个请求如下:

HttpSession objSession = request.getSession(true);
objSession.setAttribute("wasRequestURL", completeURL);

第二个请求如下:

if (null != objSession.getAttribute("wasRequestURL") && 
    !"".equals(objSession.getAttribute("wasRequestURL").toString().trim())) {

    requestedURL = objSession.getAttribute("wasRequestURL").toString();

    logger.info("The session value for wasRequestURL is :::"+requestedURL);
}

2 个答案:

答案 0 :(得分:0)

您很可能在两者之间丢失了第一个会话对象。这可以通过使用

进行验证
HttpSession objSession=request.getSession(false);//don't create session when absent

在你的第二个请求中。我几乎可以肯定,因为第一次会话丢失,它将返回null。如果是,请调查在会话中创建的机制/配置。

答案 1 :(得分:0)

  1. 检查会话到期时间。它可能设置得太低。
  2. 您使用的是支持Cookie的客户端,例如网络浏览器还是可能无法存储Cookie的更低级客户端?
  3. 当您说“重定向到其他资源”时,您的意思是另一个Web容器/服务器吗?如果是这样,除非您启用了复制,否则第二个请求将无法使用该会话。