HttpServletResponse简介说明

欢喜 Servlet 发布时间:2025-05-27 10:39:21 阅读数:16097 1
下文笔者讲述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 信息
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/Servlet/202505/306.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者