getWriter()方法具有什么功能呢?

欢喜 Servlet 发布时间:2025-05-28 09:23:16 阅读数:10991 1

getWriter()方法简介

 `getWriter()`是`HttpServletResponse`接口中定义一个方法
    用于获取字符输出流对象`PrintWriter`
	 以便向客户端(如浏览器)发送字符文本格式的响应内容

  getWriter()是Servlet开发中最常用输出方式之一
    适用于返回HTML、JSON、XML等文本格式数据

getWriter()方法的功能

功能 描述
获取字符输出流 通过 `PrintWriter` 向客户端写入文本数据
支持 HTML、JSON、XML 等格式 适合构建网页、API 接口等
自动处理字符编码 需配合`setContentType("text/html; charset=UTF-8")使用
只能调用一次 与`getOutputStream()`互斥 不能同时使用

getWriter()方法定义

PrintWriter getWriter() throws IOException
	- 返回值:一个 `PrintWriter` 对象,用于向客户端输出文本内容
	- 抛出异常:
	  - 如果已经调用了 `getOutputStream()`,会抛出 `IllegalStateException`

例1:返回HTML页面内容

@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {

        // 设置响应类型和字符编码
        response.setContentType("text/html; charset=UTF-8");

        // 获取 PrintWriter 并写入 HTML 内容
        PrintWriter writer = response.getWriter();
        writer.println("<h1>你好,世界!</h1>");
        writer.println("<p>这是使用 getWriter() 输出的内容。</p>");
    }
}
 
访问地址:
   http://localhost:8080/your-app/hello

浏览器将显示:
 你好,世界!
   以上是使用getWriter()输出的内容

例2:返回JSON数据

@WebServlet("/api/user")
public class UserServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException {

        // 设置响应类型为 JSON,并指定字符编码
        response.setContentType("application/json; charset=UTF-8");

        // 构造 JSON 字符串(实际开发中建议使用 Jackson / Gson)
        String jsonResponse = "{\"name\":\"Tom\",\"age\":25}";

        // 获取 PrintWriter 并写入 JSON 内容
        PrintWriter writer = response.getWriter();
        writer.print(jsonResponse);
    }
}
  
  访问地址:
    http://localhost:8080/your-app/api/user
  
  浏览器或前端 JavaScript(如 `fetch()`)将接收到标准 JSON 响应。

getWriter()方法注意事项

项目 说明
只能调用一次 `getWriter()` 或 `getOutputStream()` 否则会抛出 `IllegalStateException`
不要混合使用二进制和文本输出 如要下载文件,请使用 `getOutputStream()`
设置字符编码很重要 使用 `response.setContentType("text/html; charset=UTF-8")` 防止乱码
自动刷新缓冲区 调用 `writer.flush()` 可确保内容立即发送给客户端

`getWriter()`同`getOutputStream()`对比

特性 `getWriter()` `getOutputStream()`
类型 字符流 字节流
适用内容 文本(HTML、JSON、XML) 二进制(图片、PDF、Excel)
是否支持中文 需设置字符集(如 UTF-8) 需手动控制编码
是否可共用 ❌ 不能与另一个同时调用 ❌ 不能与 `getWriter()` 同时调用
典型用途 返回网页、JSON 数据 下载文件、验证码图片

`getWriter()适用场景

场景使用方式
返回HTML页面输出 `<html>`、`<body>` 等标签内容
提供RESTful API接口返回 JSON 或 XML 数据
表单提交后返回结果显示成功或错误信息
日志调试输出打印请求参数、状态信息等
动态页面渲染结合 JSP、Thymeleaf 等模板引擎输出内容
版权声明

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

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

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

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

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者