HttpServletResponse的一些常见应用

设置 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(...) 写入的数据)不会被浏览器显示。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注