设置 HTTP 响应头控制浏览器行为
1. 禁止缓存当前文档内容
通过设置以下响应头,可以控制浏览器不缓存当前页面,适用于不同浏览器的兼容:
response.setDateHeader("expries", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");Code language: JavaScript (javascript)
2. 定时刷新网页(refresh)
使用 refresh 响应头控制浏览器每隔指定秒数自动刷新页面:
response.setHeader("refresh", "5"); // 每隔5秒钟刷新一次Code language: JavaScript (javascript)
3. 通过 response 实现请求重定向
请求重定向指:一个 Web 资源收到客户端请求后,通知客户端去访问另外一个 Web 资源。
应用场景:用户登录,登录成功后跳转到某个页面。
实现方式:调用 response.sendRedirect(String location) 方法。
sendRedirect 内部的实现原理:使用 response 设置 302 状态码和 Location 响应头。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.sendRedirect("/JavaWeb_HttpServletResponse_Study_20140615/index.jsp");
}Code language: JavaScript (javascript)
综合示例
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setDateHeader("expries", -1);
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache"); // 这三种对应不同的浏览器,使浏览器不要缓存
response.setHeader("refresh", "5"); // 告诉浏览器每隔五秒钟都去刷新一次页面,重新请求
response.getWriter().append("foxdevelop.com ").append(new Date().toGMTString());
response.sendRedirect("http://foxdevelop.com");
}Code language: JavaScript (javascript)
注意:
sendRedirect会向浏览器发送 302 状态码和Location头,浏览器收到后会发起一次新的请求访问重定向地址。重定向后,当前响应体中的内容(如getWriter().append(...)写入的数据)不会被浏览器显示。
Previous: 在 Servlet 中动态生成图片
Next: HttpServletRequest 对象