Java Web 响应处理:HttpServletResponse 详解
在 Java Web 开发中,服务器对客户端请求的响应由 HttpServletResponse 对象封装。它负责构建 HTTP 响应消息(状态行、响应头、响应正文),并将结果返回给客户端。本文将详细解析 HttpServletResponse 的核心功能,包括状态码设置、响应头管理、响应正文输出及常见应用场景。
HttpServletResponse 概述
HttpServletResponse 是 ServletResponse 接口的子接口,专门用于处理 HTTP 协议的响应。它由 Servlet 容器创建,通过 service() 方法传递给 Servlet,开发者通过其提供的方法构建响应内容。
1 | protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { |
状态行处理
HTTP 响应状态行由协议版本、状态码和状态描述组成(如 HTTP/1.1 200 OK)。状态码用于告知客户端请求处理结果,HttpServletResponse 提供以下方法设置状态码:
核心方法
setStatus(int sc):设置状态码(如200表示成功,404表示资源不存在)。sendError(int sc):发送错误状态码,并触发容器的错误页面机制(如404会显示自定义错误页)。sendError(int sc, String msg):发送错误状态码及自定义描述信息。
常见状态码
| 状态码 | 含义 | 常量(HttpServletResponse) | 应用场景 |
|---|---|---|---|
| 200 | 请求成功 | SC_OK |
正常返回响应正文 |
| 302 | 临时重定向 | SC_FOUND |
页面跳转(如登录后跳首页) |
| 400 | 客户端请求错误 | SC_BAD_REQUEST |
参数格式错误 |
| 401 | 未认证 | SC_UNAUTHORIZED |
未登录访问受保护资源 |
| 403 | 权限不足 | SC_FORBIDDEN |
登录后无操作权限 |
| 404 | 资源不存在 | SC_NOT_FOUND |
请求 URL 错误 |
| 500 | 服务器内部错误 | SC_INTERNAL_SERVER_ERROR |
代码抛出异常 |
示例:
