response.setHeader各种使用方法

概述:

response 是 Java web 开发中经常用到的对象之一,它的主要作用是向浏览器返回信息,例如将数据显示在浏览器上,或者将提示信息,错误信息传送到客户端。

response.setHeader 方法可以设置 HTTP 响应头,客户端请求时可以读取这些响应头信息。常用的响应头有:Content-Type、Content-Length、 Date、Server、Cache-Control、 Expires、Last-Modified、Location、Set-Cookie 等。

下面将分别介绍各种响应头的用法和示例:

1. Content-Type

Content-Type 响应头用于告诉客户端返回数据的 MIME 类型。常见的 MIME 类型有: text/html、application/json、image/jpeg、application/pdf、application/xml 等等。

设置示例:

```java

response.setContentType("text/html");

```

2. Content-Length

Content-Length 响应头用于告诉客户端返回数据的长度。

设置示例:

```java

String data = "Hello";

response.setContentLength(data.length());

```

3. Date

Date 响应头返回的是服务器响应的时间。

设置示例:

```java

response.setDateHeader("Date", new Date().getTime());

```

4. Server

Server 响应头返回的是服务器的名称和版本号。

设置示例:

```java

response.setHeader("Server", "Apache/2.2.21 (Unix)");

```

5. Cache-Control

Cache-Control 响应头用于控制客户端缓存该响应的信息,常见的控制值有public、private、no-cache、max-age 等。

设置示例:

```java

response.setHeader("Cache-Control", "max-age=86400, public");

```

6. Expires

Expires 响应头用于设置客户端缓存过期时间,可以配合 Cache-Control 使用。

设置示例:

```java

Calendar cal = Calendar.getInstance();

cal.setTime(new Date());

cal.add(Calendar.HOUR, 1);

response.setHeader("Expires", cal.getTime().toString());

```

7. Last-Modified

Last-Modified 响应头返回的是资源最后一次修改的时间。

设置示例:

```java

File file = new File("test.html");

response.setDateHeader("Last-Modified", file.lastModified());

```

8. Location

Location 响应头用于告诉客户端将请求重定向到哪个 URL。

设置示例:

```java

response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);

response.setHeader("Location", "http://www.example.com");

```

9. Set-Cookie

Set-Cookie 响应头用于设置 cookie,服务器在响应头中添加 Set-Cookie 响应头,浏览器收到响应以后会存储该 cookie。

设置示例:

```java

Cookie cookie = new Cookie("username", "john");

cookie.setMaxAge(3600); //设置 cookie 有效期为 1 小时

response.addCookie(cookie);

```

完整示例代码:

```java

@WebServlet("/HelloServlet")

public class HelloServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType("text/html;charset=utf-8");

String name = request.getParameter("name");

PrintWriter out = response.getWriter();

out.println("");

out.println("HelloServlet");

out.println("");

out.println("

Hello " + name + "!

");

out.println("");

// 设置响应头

response.setHeader("Server", "Apache/2.2.21 (Unix)"); // 设置服务器名称和版本号

response.setHeader("Cache-Control", "max-age=86400, public"); // 设置缓存策略

response.setDateHeader("Expires", new Date().getTime() + 86400 * 1000); // 设置缓存过期时间

// 设置 cookie

Cookie cookie = new Cookie("name", name);

cookie.setMaxAge(3600); // 设置有效期为 1 小时

response.addCookie(cookie);

// 重定向

if ("admin".equals(name)) {

response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);

response.setHeader("Location", "http://www.example.com/admin.jsp");

}

out.println("");

out.flush();

out.close();

}

}

```

以上是 response.setHeader 方法的使用方法和示例。需要注意的是,设置响应头必须在第一次输出数据之前完成,否则会抛出 IllegalStateException 异常。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/

点赞(69) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部