HttpServletResponse简介说明
下文笔者讲述HttpServletResponse的相关说明,如下所示
例:
例:
例:
HttpServletResponse简介
`HttpServletResponse`是Java Servlet API中一个接口 是`ServletResponse`子接口 专门用于处理HTTP响应 它封装服务器返回给客户端(如浏览器)所有HTTP响应信息 包括响应头、状态码、响应体等。
`HttpServletResponse`功能
功能 | 描述 |
向客户端发送响应数据 | 如 HTML、JSON、XML、文件等 |
设置响应状态码 | 如 200 OK、404 Not Found、302 Redirect 等 |
设置响应头信息 | 如 Content-Type、Content-Length、Set-Cookie 等 |
控制响应行为 | 如重定向、设置字符编码、缓存控制等 |
获取输出流 | 用于输出文本或二进制数据 |
接口继承关系
public interface HttpServletResponse extends ServletResponse { // HTTP 特有方法定义 }
设置响应状态码
方法名 | 描述 |
`setStatus(int sc)` | 设置 HTTP 状态码(如 200 OK) |
`sendError(int sc)` | 发送错误响应(如 404、500) |
`sendError(int sc, String msg)` | 发送带消息的错误响应 |
`sendRedirect(String location)` | 发送重定向响应(302) |
response.sendError(HttpServletResponse.SC_NOT_FOUND, "页面不存在"); response.sendRedirect("login.jsp");
设置响应内容和类型
方法名 | |
`setContentType(String type)` | 设置响应内容类型(如 text/html, application/json) |
`setCharacterEncoding(String charset)` | 设置响应使用的字符编码(如 UTF-8) |
`setContentLength(int len)` | 设置响应内容长度(可选) |
`flushBuffer()` | 强制将缓冲区中的响应内容发送给客户端 |
response.setContentType("text/html"); response.setCharacterEncoding("UTF-8");
获取输出流(用于写入响应内容)
方法名 | 描述 |
`getWriter()` | 获取字符输出流(PrintWriter),用于输出文本内容(如 HTML、JSON) |
`getOutputStream()` | 获取字节输出流(ServletOutputStream),用于输出二进制内容(如图片、文件) |
注意事项: 不能同时调用`getWriter()` 和 `getOutputStream()` 否则抛出 `IllegalStateException` 输出完成后建议调用 `flush()` 或 `flushBuffer()` 确保数据及时发送 不要重复设置状态码或重定向 否则可能抛出 `IllegalStateException` | 设置 `Content-Type` 非常重要 浏览器根据此值决定如何解析响应内容 响应对象是每个请求独有 不需要担心线程安全问题
设置响应头信息
方法名 | 描述 |
`setHeader(String name, String value)` | 设置一个响应头(覆盖已有值) |
`addHeader(String name, String value)` | 添加一个响应头(保留已有值) |
`setDateHeader(String name, long date)` | 设置日期类型的响应头 |
`setIntHeader(String name, int value)` | 设置整数类型的响应头 |
response.setHeader("Cache-Control", "no-cache"); response.addHeader("Set-Cookie", "JSESSIONID=123456; Path=/; HttpOnly");例
@WebServlet("/hello") public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { // 设置响应类型和编码 response.setContentType("text/html"); response.setCharacterEncoding("UTF-8"); // 设置响应头 response.setHeader("X-Powered-By", "MyApp"); // 获取 PrintWriter 并写入响应内容 PrintWriter out = response.getWriter(); out.println("<h1>Hello, HttpServletResponse!</h1>"); out.flush(); } }
HttpServletResponse适用场景
场景 | 使用方式 |
返回 HTML 页面 | 使用 `PrintWriter` 输出 HTML 内容 |
返回 JSON 数据 | 设置 `Content-Type: application/json` 并输出 JSON 字符串 |
文件下载 | 使用 `ServletOutputStream` 输出文件流 |
图片验证码生成 | 使用 `BufferedImage` 和 `ImageIO.write()` 输出图片 |
用户登录后跳转 | 使用 `response.sendRedirect("home")` 跳转页面 |
设置 Cookie | 使用 `addHeader("Set-Cookie", "...")` 设置 Cookie 信息 |
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。