概述:
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("
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/
发表评论 取消回复