Java 为什么session.invalidate不';不能在IE浏览器中工作?

Java 为什么session.invalidate不';不能在IE浏览器中工作?,java,session,servlets,servlet-filters,Java,Session,Servlets,Servlet Filters,我在我的应用程序中实现了一个sevlet筛选器,在该筛选器中,如果我找到某个特定的url模式,我将使用request.getSession().invalidate()注销并清除会话,然后重定向到登录页面 session.invalidate(); session.setAttribute("hi", true); response.sendRedirect("login.jsp"); 但我发现,在我输入用户名和密码,然后提交登录表单之后,之前的会话似乎没有完全清除 那么,是否可以让我完全清除

我在我的应用程序中实现了一个sevlet筛选器,在该筛选器中,如果我找到某个特定的url模式,我将使用request.getSession().invalidate()注销并清除会话,然后重定向到登录页面

session.invalidate();
session.setAttribute("hi", true);
response.sendRedirect("login.jsp");
但我发现,在我输入用户名和密码,然后提交登录表单之后,之前的会话似乎没有完全清除


那么,是否可以让我完全清除会话,就像启动一个新的IE实例一样?(顺便说一句,我的代码在FF和Chrome中工作)。

会话是一个服务器端概念。浏览器仅保留一个jsessionid,以告知服务器要为此请求获取哪个会话对象

也就是说,你们的问题不是IE。即使是IE,那个也是你们面临的某种缓存问题。清除缓存。您可以设置以下响应标题:

Cache-Control: no-cache, no-store
Pragma: no-cache

@波佐:一个需要澄清的简短问题。JSP已创建默认会话隐式对象。在本例中,他创建了一个会话,然后使其失效,失效后,他设置属性,再次使用隐式会话创建。

我知道这是一篇旧文章。 但最近我也有同样的问题

我尝试session.invalidate()。。。。而且不起作用。 我试着删除coockies但不起作用

问题是internet explorer缓存。。我只是在serlevt响应上没有缓存头,然后为我工作

示例代码:

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setHeader("Cache-Control","no-store"); //HTTP 1.1 
    response.setHeader("Pragma","no-cache"); //HTTP 1.0 
    response.setDateHeader ("Expires", 0);
    ......
    ......
    response.response.getWriter().print(json);

}

你怎么能说它不适用于IE?我的意思是什么让你注册它不适用于IEE例如:如果我使用一个新的IE实例,在我提交登录表单后,请求将不包含“授权头”,但如果是我上面描述的情况,那么在请求中它将包含一个“授权头”,这必须是由于缓存。我也知道这一点,但问题是我无法清除服务器端的缓存。是的,这是客户端缓存,我无法清除服务器端的客户端缓存,要求用户在注销后清除缓存是荒谬的,对吗?你可以发送标题指示浏览器不要缓存。请参阅updatedI已尝试,但无法工作。。。请你看一下我在我的问题下的评论,这是一个更具体的问题。