From c52a2d0f0820e65026a359b19e0a5723e48e8f3f Mon Sep 17 00:00:00 2001 From: Eterlaze <1215710470@qq.com> Date: Sun, 22 Dec 2024 11:07:31 +0800 Subject: [PATCH] =?UTF-8?q?HTTTP=E5=93=8D=E5=BA=94=E4=B8=AD=E8=8E=B7?= =?UTF-8?q?=E5=8F=96JSON=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/example/api/utils/ResponseUtil.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 IDEA/src/main/java/com/example/api/utils/ResponseUtil.java diff --git a/IDEA/src/main/java/com/example/api/utils/ResponseUtil.java b/IDEA/src/main/java/com/example/api/utils/ResponseUtil.java new file mode 100644 index 00000000..431caa60 --- /dev/null +++ b/IDEA/src/main/java/com/example/api/utils/ResponseUtil.java @@ -0,0 +1,44 @@ +package com.example.api.utils; + +import com.alibaba.fastjson.JSON; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * ResponseUtil 类提供向 HTTP 响应中写入 JSON 数据的工具方法。 + */ +public final class ResponseUtil { + + /** + * 向 HttpServletResponse 中写入 JSON 数据。 + * @param response HttpServletResponse 对象,用于设置响应头和写入响应体。 + * @param o 要写入响应体的对象,将被转换为 JSON 字符串。 + */ + public static void writeJson(HttpServletResponse response, Object o) { + // 设置跨域资源共享(CORS)相关的响应头,允许跨域请求 + response.setHeader("Access-Control-Allow-Origin", "*"); + response.setHeader("Access-Control-Allow-Credentials", "true"); + response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT"); + response.setHeader("Access-Control-Max-Age", "3600"); + response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); + // 设置响应内容类型为 JSON 格式,并指定字符集为 utf-8 + response.setContentType("application/json;charset=utf-8"); + // 设置 HTTP 响应状态码为 200(OK) + response.setStatus(200); + try { + // 获取 PrintWriter 对象,用于向客户端写入数据 + PrintWriter writer = response.getWriter(); + // 将对象转换为 JSON 字符串 + writer.write(JSON.toJSONString(o)); + // 清空缓冲区,确保所有数据都写入输出流 + writer.flush(); + // 关闭 PrintWriter 对象 + writer.close(); + } catch (IOException e) { + // 如果发生 IO 异常,打印堆栈跟踪信息 + e.printStackTrace(); + } + } +}