【问题标题】:Java session deleted after page refresh页面刷新后 Java 会话被删除
【发布时间】:2013-02-25 22:04:34
【问题描述】:

我有一个网站,其中有一个登录表单。如果登录成功,我将对象用户放入会话中,然后以这种方式进入另一个页面(我需要会话属性):

-Java Servlet-

 request.getSession(true).setAttribute("utente", u);
 request.getSession(true).setAttribute("abbonamento", a);
 request.getRequestDispatcher("HomeUtente.jsp").forward(request, response);

-Jsp页面-

    <%
    Utente u = null;
    Abbonamento a = null;
    try {
        u = (Utente) session.getAttribute("utente");
        a = (Abbonamento) session.getAttribute("abbonamento");
    } catch (Exception e) {
        a = null;
        u = null;
        e.printStackTrace();
    }
%>

现在,如果我这样做一次就可以了,但是如果我刷新页面,似乎会话将被删除。

我猜这是因为当我刷新页面时(在调试模式下)a 和 u 都将为空。

有什么想法吗?

【问题讨论】:

  • 如何确认会话已被删除?
  • @BheshGurung 我猜这是因为当我刷新页面(在调试模式下)时,a 和 u 都将为空。
  • 发布您的 servlet 和 JSP 的完整代码以获得一些线索。

标签: java jsp session request


【解决方案1】:

Java 会话 -

HttpSession getSession(boolean create)-

返回与此请求关联的当前 HttpSession,或者,如果没有当前会话并且 create 为 true,则返回一个新会话。

所以在你使用的程序中 -

request.getSession(true)-

它总是返回一个新的会话并且之前的会话变量被删除。

您也可以查看以下链接以更好地理解 -

How to check if session exists or not?

【讨论】:

  • 只有在会话不存在时才会创建会话。 OP 不会删除/使会话无效,因此request.getSession(true) 没有理由重新创建会话。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多