学科分类
目录
Java Web

禁止浏览器缓存页面

由于大多数网页内容都不会发生变化,因此,为了加快访问速度,很多浏览器都对访问过的页面进行缓存。但是,在某些特定的场合下,缓冲页面会影响网页的部分功能。例如,动态页面中的Javascript脚本文件如果得不到及时更新,就会影响网页效果。为了避免这种情况的发生,在HTTP响应消息中,需要设置以下头字段:

Expires:0
Cache-Control:no-cache
Pragma : no-cache

上面设置的三个响应头都是用来禁止浏览器缓存页面,由于不同的浏览器对它们的支持不同,一般在响应消息中将这三个头字段都进行设置。接下来,通过一个向客户端输出随机数和产生Form表单的案例,学习如何使用response对象禁止浏览器缓冲页面,如例1所示。

例1 CacheServlet.java

 1    package cn.itcast.chapter05.response; 
 2    import java.io.*;
 3    import javax.servlet.*;
 4    import javax.servlet.http.*;
 5    public class CacheServlet extends HttpServlet {
 6        public void doGet(HttpServletRequest request, 
                          HttpServletResponse response)
 7                throws ServletException, IOException {
 8            response.setContentType("text/html;charset=utf-8"); 
 9            response.setDateHeader("Expires",0);
 10            response.setHeader("Cache-Control","no-cache"); 
 11            response.setHeader("Pragma","no-cache");  
 12            PrintWriter out = response.getWriter();
 13        out.println("本次响应的随机数为:" + Math.random());
 14        out.println("<form action='NotServlet'" + "method='POST'>" +
 15                "第一个参数:<input type='text' name='p1'><br>" +
 16                "第二个参数:<textarea name='p2'></textarea><br>" +
 17                "<input type='submit' value='提交'> " +
 18                "</form>");
 19        }
 20        public void doPost(HttpServletRequest request, 
                           HttpServletResponse response)
 21                throws ServletException, IOException {
 22            doGet(request, response);
 23        }
 24    }

在web.xml中配置完CacheServle映射后,启动Tomcat服务器,在浏览器的地址栏中输入URL地址http://localhost:8080/chapter05/CacheServlet访问CacheServlet,浏览器显示的结果如图1所示。

图1 运行结果

在图1中,当表单数据填写完成后,点击“提交”按钮,此时,服务器返回一个404错误的页面,该页面暂时无需理会。点击浏览器的回退按钮,返回到刚才填写的表单页面,发现浏览器之前填写的表单内容都不在了,而且重新生成了一个随机数。由此说明,HttpServletRespons对象实现了禁止浏览器缓存页面的功能。

点击此处
隐藏目录