java - 如何从 servlet 中清除浏览器缓存?

标签 java jsp servlets cache-control

当我单击注销按钮时,我希望清除浏览器缓存。

我正在尝试使用以下代码清除浏览器缓存:

if(uri.equals("/SciArchive/logout.sci"))
    {
        HttpSession session=req.getSession(false);
         res.setHeader("Cache-Control","no-cache"); 
             res.setHeader("Cache-Control","no-store"); 
             res.setDateHeader("Expires", 0); 
             res.setHeader("Pragma","no-cache"); 
        if(session!=null)
        {
            session.invalidate();
            rd=req.getRequestDispatcher("/home.jsp");               
        }

        rd.forward(req,res);
        return;
    }

注销后在浏览器窗口中按下后退按钮时,我需要浏览器不显示上一页。

当我点击后退按钮时,它会显示上一页,在浏览器窗口中点击前进按钮后,它会显示文档已过期

请给我建议来清除此错误!

最佳答案

您无法清除缓存,但您可以要求不缓存您的页面。这意味着您必须对 session 中的每个页面执行此操作(否则后退按钮将继续工作,并且您的注销页面是唯一未缓存的页面)。

另请参阅: How to control cache in JSP page? :

httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
httpResponse.setHeader("Pragma", "no-cache"); // HTTP 1.0.
httpResponse.setDateHeader("Expires", 0); // Proxies.

编辑: 显然可以使用 javascript 和刷新以编程方式清除缓存,但我怀疑这就是您正在寻找的: How to programmatically empty browser cache?

关于java - 如何从 servlet 中清除浏览器缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19923045/

相关文章:

java - 如何使用子类中的 Action 监听器从父类(super class)中的 JPanel 中删除所有元素?

java - 通过 Java 查询和抓取的廉价航类

java - java和mysql中的restful webservice

java - 在 NetBeans 中将 HTML 与 MSAcess 连接起来

java - 如何找到运行 Servlet 的主机和端口

java - GWT 无法解析 BST 和 EDT 等时区

javascript - 如何在单击某些按钮时在jsp中切换div

java - 如何使用struts 1在jsp的对象标记中设置上下文的值

javascript - 专用提交按钮使用相同的 servlet 将表单数据单独保存到数据库

java - 从另一个包含 session 的 Servlet 调用 Servlet 期间