在Java中,发送HTTP响应行是构建Web应用程序的关键部分。响应行由状态码和头部信息组成,它们共同决定了客户端如何处理服务器返回的数据。本文将详细介绍如何在Java中设置HTTP响应状态码和头部信息。
HTTP响应状态码
HTTP响应状态码是服务器返回给客户端的一个数字,用于指示请求是否成功、是否需要进一步操作或是否发生错误。状态码分为以下几类:
- 1xx:信息性响应 - 表示请求已接收,需要客户端进一步操作。
- 2xx:成功响应 - 表示请求已成功处理。
- 3xx:重定向响应 - 表示客户端需要执行某些操作以完成请求。
- 4xx:客户端错误响应 - 表示客户端请求有误。
- 5xx:服务器错误响应 - 表示服务器在处理请求时发生错误。
在Java中,可以使用HttpServletResponse对象的setStatus方法设置状态码。以下是一些常用的状态码及其含义:
response.setStatus(HttpServletResponse.SC_OK); // 200 OK
response.setStatus(HttpServletResponse.SC_NOT_FOUND); // 404 Not Found
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); // 500 Internal Server Error
HTTP头部信息
HTTP头部信息提供了关于响应内容的额外信息,例如内容类型、内容长度、缓存策略等。在Java中,可以使用HttpServletResponse对象的setHeader方法设置头部信息。
以下是一些常用的头部信息及其设置方法:
内容类型
response.setContentType("text/html"); // 设置内容类型为HTML
response.setContentType("application/json"); // 设置内容类型为JSON
内容长度
response.setContentLength(1024); // 设置内容长度为1024字节
缓存策略
response.setHeader("Cache-Control", "no-cache"); // 禁用缓存
response.setHeader("Cache-Control", "max-age=3600"); // 设置缓存有效期为3600秒
设置Cookie
Cookie cookie = new Cookie("name", "value");
cookie.setMaxAge(3600); // 设置Cookie有效期为3600秒
response.addCookie(cookie); // 添加Cookie到响应中
完整示例
以下是一个简单的Java Web应用程序示例,演示如何设置响应状态码和头部信息:
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class ResponseExample extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setStatus(HttpServletResponse.SC_OK); // 设置状态码为200 OK
response.setContentType("text/html"); // 设置内容类型为HTML
response.setHeader("Cache-Control", "no-cache"); // 禁用缓存
// 发送响应内容
response.getWriter().write("<h1>Hello, World!</h1>");
}
}
通过以上示例,我们可以看到如何设置HTTP响应状态码和头部信息。在实际开发中,根据不同的需求,可以灵活地设置各种状态码和头部信息,以满足客户端的期望。
