【问题标题】:request.getSession() creating new session after sendRedirect()request.getSession() 在 sendRedirect() 之后创建新会话
【发布时间】:2012-06-27 09:38:41
【问题描述】:

我们正在开发旅行应用程序。通过这个航班,酒店,巴士票将被预订。它是基于产品的应用程序。几乎我们有 25 个客户(3 个客户正在使用,仍在开发中)。我们正在为所有客户维护一台服务器。一个服务器(应用程序)多个客户端是我的应用程序中的巨大成就。但问题是每个客户都有不同的支付网关用于他们的汇款,如 EBS、HDFC、ICICI、ATOM 等。我们必须使用 sendRedriect() 来调用他们的支付网关系统。

response.sendRedirect("hdfc link....");

在重定向之前,我们在会话范围内存储了近 7-9 个对象,每个对象将包含近 35-50 个变量。 支付网关流程完成后,将重定向到我的应用程序。当我尝试获取会话时

request.getSession();

它正在创建新会话一段时间(10 次中有 5 次)。

存储在请求范围内的变量对我来说至关重要。我无法将其存储到数据库中,因为它们非常庞大。对于每个请求,我们都会生成长度为 25 的随机数。使用该随机数存储会话变量。

session.setAttribute("flightStatus"+randomNumber, flightstatus object); 

所以请建议如何取回上一个会话,以及为什么上一个会话无效并且新会话正在创建。

【问题讨论】:

  • 如果没有更多信息,很难提供帮助。会话创建为新的那些用例是什么?是否有任何会话超时等?
  • @UmeshAwasthi 会话没有超时。
  • 您是否明确地进行任何 url 重写或将会话存储在 cookie 中的任何位置?以及在什么场景下新创建的会话?
  • 无法追踪场景...
  • 您可以将它存储在会话/请求中,但它太大而无法存储在数据库中?这没有任何意义。除此之外,如果您在同一台服务器上,会话不会超时,您在 HTTP 和 HTTPS 之间共享会话,除了您之外的任何人都很难弄清楚会话被丢弃的原因- -不应该。

标签: jsp session jakarta-ee servlets struts2


【解决方案1】:

我认为你应该使用 request.getSession(false) 。如果您不想获得新会话。

阅读此文档:request.getSession(false)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-26
    • 2016-03-17
    • 1970-01-01
    • 2017-05-10
    • 2012-08-25
    • 2012-11-07
    • 2015-01-21
    • 2017-10-21
    相关资源
    最近更新 更多