gpt4 book ai didi

java - servlet 中的 session 失效

转载 作者:行者123 更新时间:2023-12-02 09:45:09 25 4
gpt4 key购买 nike

我的网络应用程序中有以下场景:

  1. 所有资源都受到保护。
  2. 用户从登录屏幕开始,然后他被转发到起始页面 - index.jsp
  3. 在 session 过期前不久,用户会看到一个对话框 - session 即将过期,单击“延长”可延长 session ,单击“取消”可取消 session ,并且有一个计时器可对 session 过期进行倒计时。
  4. 如果用户没有单击任何内容,我将调用我的 servlet,该 servlet 应该使 session 过期并转发到 index.jsp(这应该触发登录屏幕)。下面是使 session 失效的代码:

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) {
    HttpSession session = request.getSession(false);

    if(session != null)
    session.invalidate();

    try {
    request.getRequestDispatcher("/jsp/index.jsp").forward(request,response);
    } catch (Exception e) {
    e.printStackTrace();
    }

    }

我的问题是,虽然它第一次在 IE 中显示登录屏幕,但第二次看起来 session 并未失效,并且主屏幕只是在 session 即将过期时保持刷新(刷新延长了 session )。

在 Firefox 中,它第一次甚至不显示登录屏幕,当它转到过期 servlet 时,我在控制台中看到错误。

您认为问题可能出在哪里?

附注看起来像将其添加到 IE 中的 servlet 中:

  // Set standard HTTP/1.1 no-cache headers.
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");

// Set IE extended HTTP/1.1 no-cache headers (use addHeader).
response.addHeader("Cache-Control", "post-check=0, pre-check=0");

// Set standard HTTP/1.0 no-cache header.
response.setHeader("Pragma", "no-cache");

我需要进一步调查 FF。

好吧,回答我关于 FF 的问题,问题是我异步调用 session 过期,并且它内部有一个重定向,所以这在 FF 中不起作用,但由于某种原因在 IE 中起作用。

最佳答案

我知道已经太晚了。但这可能对另一个人有帮助。

据我所知,您的问题是
您想在 session 过期后带上登录页面。为此,您可以将以下代码行添加到 jsp head 标记

<head><meta http-equiv="refresh" content="${pageContext.session.maxInactiveInterval};url=login"></head>

session 过期后,它会将您的页面重定向到上述代码 url 属性中提到的 url。

您还可以将以下代码添加到 JSP 页面顶部

<%
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control",
"no-cache, no-store, must-revalidate, private, max-age=0");
response.setDateHeader("Expires", 0);
%>
<%@page session="true"%>

不缓存任何内容。

关于java - servlet 中的 session 失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13958025/

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