JavaWeb禁止浏览器缓存当前Web页面的方法

 更新时间:2017年11月27日 10:26:50   投稿:mrr  
所谓浏览器缓存,是指当第一次访问网页时,浏览器会将这些网页缓存到本地,当下一次再访问这些被缓存的网页时,浏览器就会直接从本地读取这些网页的内容,而无需再从网络上获取

所谓浏览器缓存,是指当第一次访问网页时,浏览器会将这些网页缓存到本地,当下一次再访问这些被缓存的网页时,浏览器就会直接从本地读取这些网页的内容,而无需再从网络上获取。

        虽然浏览器提供的缓存功能可以有效地提高网页的装载速度,但对于某些需要实时更新的网页,这种缓存机制就会影响网页的正常显示。幸好在HTTP响应消息头中提供了三个字段可以关闭客户端浏览器的缓存功能。下面三条语句分别使用这三个字段来关闭浏览器的缓存:

response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");

        虽然上面三个HTTP响应消息头字段都可以关闭浏览器缓存。但并不是所有的浏览器都支持这三个响应消息头字段,因此,最好同时使用上面这三个响应消息头字段来关闭浏览器的缓存。

例子 : 禁止浏览器缓存当前Web页面

1.  实例说明

本程序演示了在未关闭浏览器缓存和关闭浏览器缓存两种情况下,通过form提交请求消息时的表现。

2.  编写Cache类

在Cache类中同时使用上述的三个响应消息头字段关闭了浏览器缓存,并向客户端输出一段HTML代码,以测试关闭缓存和未关闭缓存的效果。Cache类的实现代码如下:

public class Cache extends HttpServlet
{
  public void service(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException
  {
    response.setContentType("text/html;charset=UTF-8");
    String cache = request.getParameter("cache");
    if (cache != null)
    {
      if (cache.equals("false"))
      {
        // 关闭浏览器缓存
        response.setDateHeader("Expires", 0);
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("Pragma", "no-cache");
      }
    }
    // 定义HTML代码 
    String html = "<form id = 'form', action='test' method='post'>"
        + "姓名:<input type='text' name = 'name'/>"
        + "<input type='submit' value='提交' />" + "</form>";
    PrintWriter out = response.getWriter();
    out.println(html);     // 向客户端输出HTML代码
  }
}

从上面的代码可以看出,当cache请求参数值为false时关闭浏览器的缓存。

3.  配置Cache类

Cache类的配置代码如下:

<servlet>
  <servlet-name>Cache</servlet-name>
  <servlet-class>chapter5.Cache</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>Cache</servlet-name>
  <url-pattern>/Cache</url-pattern>
</servlet-mapping>

4.  测试未关闭浏览器缓存的情况

在浏览器地址栏中输入如下的URL:

http://localhost:8080/demo/Cache?cache=true

        在【姓名】文本框中输入任意字符串,点击【提交】按钮,这时浏览器会显示一个异常(这个异常是由于所提交的test不存在而产生的,我们不用去管它),然后点击浏览器的返回按钮回到刚才输入数据的页面。我们可以看到,刚才输入的字符串仍然存在。这说明在返回时,浏览器并未从服务端重新获得这个页面,而是从本地的缓存里重新加载了当前的页面。    

5.  测试关闭浏览器缓存的情况

在浏览器地址栏中输入如下的URL来关闭浏览器缓存:

http://localhost:8080/demo/Cache?cache=false

        按着上一步的方式提交并返回,发现刚才输入的数据没有了。这说明在关闭浏览器缓存后,每次返回时,浏览器总会从服务端重新获得当前页面。因此,当前页面总是保持着初始值。

6.  程序总结

        在关闭浏览器缓存时,为了尽可能保证在大多数浏览器中都有效,我建议同时使用上述三个HTTP响应消息头字段来关闭浏览器缓存。

总结

以上所述是小编给大家介绍的JavaWeb禁止浏览器缓存当前Web页面的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 一文详解如何在Java Maven项目中使用JUnit 5进行测试

    一文详解如何在Java Maven项目中使用JUnit 5进行测试

    这篇文章主要介绍了如何在Java Maven项目中使用JUnit 5进行测试的相关资料,JUnit5是一个流行的Java测试框架,它涵盖了JUnit5的概述、环境配置、编写测试用例、运行测试、高级特性和最佳实践,需要的朋友可以参考下
    2025-04-04
  • SSH框架网上商城项目第3战之使用EasyUI搭建后台页面框架

    SSH框架网上商城项目第3战之使用EasyUI搭建后台页面框架

    SSH框架网上商城项目第3战之使用EasyUI搭建后台页面框架,讨论两种搭建方式:基于frameset和基于easyUI,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • 动态上传jar包热部署的实战详解

    动态上传jar包热部署的实战详解

    开发系统过程中遇到的一个需求,系统给定一个接口,用户可以自定义开发该接口的实现,并将实现打成jar包,上传到系统中。系统完成热部署,并切换该接口的实现。本文详细介绍了实现方法,需要的可以参考一下
    2022-10-10
  • Springmvc模式上传和下载与enctype对比

    Springmvc模式上传和下载与enctype对比

    这篇文章主要介绍了Springmvc模式上传和下载与enctype对比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • 如何将Java枚举名称作为注解的属性值实现详解

    如何将Java枚举名称作为注解的属性值实现详解

    这篇文章主要为大家介绍了如何将Java枚举名称作为注解的属性值实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • Spring  ApplicationContextAware 接口的作用及使用方式

    Spring  ApplicationContextAware 接口的作用及使用方式

    Spring提供了许多回调接口,用于Bean生命周期中执行特定的操作,通过实现ApplicationContextAware接口,Spring提供了一种便捷的方式让 Bean获取对Spring容器的引用,本文介绍ApplicationContextAware接口的作用、使用方式,以及在实际应用中的常见场景,感兴趣的朋友一起看看吧
    2024-01-01
  • Springboot程序在使用Maven下载依赖时失效的解决方法

    Springboot程序在使用Maven下载依赖时失效的解决方法

    以前能成功创建SpringBoot项目并运行,但是现在再创建新项目时Maven下载依赖失败,且maven依赖刷新按键一直没反应,所以本文给大家介绍了Springboot程序在使用Maven下载依赖时失效的解决方法,需要的朋友可以参考下
    2024-05-05
  • 深入浅析springboot中static和templates区别

    深入浅析springboot中static和templates区别

    这篇文章主要介绍了springboot中static和templates区别,本文通过图文实例代码相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • springboot druid数据库配置密码加密的实现

    springboot druid数据库配置密码加密的实现

    Druid是阿里开发的数据库连接池,本文主要介绍了springboot druid数据库配置密码加密的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-06-06
  • SpringBoot Actuator埋点和监控及简单使用

    SpringBoot Actuator埋点和监控及简单使用

    最近做的项目涉及到埋点监控、报表、日志分析的相关知识,于是捣鼓的一番,下面把涉及的知识点及SpringBoot Actuator埋点和监控的简单用法,给大家分享下,感兴趣的朋友一起看看吧
    2021-11-11

最新评论