setContentType()简介
`setContentType()`
是`HttpServletResponse`接口中定义一个方法
用于设置响应内容MIME 类型和字符编码格式
它是Servlet
或Controller
在向客户端(如浏览器)返回响应数据前非常关键的一环
决定客户端如何解析响应内容(如 HTML、JSON、XML、图片等)
setContentType()功能
功能 | 描述 |
设置响应内容类型(MIME Type) | 告诉客户端响应体是什么格式(如 HTML、JSON、XML 等) |
设置字符编码 | 避免乱码,确保中文或特殊字符正常显示 |
控制浏览器行为 | 浏览器根据Content-Type决定如何渲染内容 |
setContentType()方法
void setContentType(String type)
- 参数说明:
- `type`:一个字符串,表示 MIME 类型 + 可选字符集,例如:
- `"text/html"`:HTML 页面
- `"text/plain"`:纯文本
- `"application/json"`:JSON 数据
- `"application/xml"`:XML 数据
- `"image/jpeg"`:JPEG 图片
- `"application/pdf"`:PDF 文件
例
response.setContentType("text/html; charset=UTF-8");
例 1:返回 HTML 页面
@WebServlet("/hello")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// 设置响应类型为 HTML,并指定字符编码为 UTF-8
response.setContentType("text/html; charset=UTF-8");
// 输出 HTML 内容
PrintWriter out = response.getWriter();
out.println("<h1>你好,世界!</h1>");
out.println("<p>这是使用 setContentType 设置 HTML 类型的示例。</p>");
}
}
例2:返回JSON数据
@WebServlet("/api/user")
public class UserApiServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// 设置响应类型为 JSON,并指定字符编码为 UTF-8
response.setContentType("application/json; charset=UTF-8");
// 构造 JSON 字符串(实际开发中建议使用 Jackson / Gson 库)
String jsonResponse = "{\"name\":\"Tom\",\"age\":25}";
// 输出 JSON 数据
PrintWriter out = response.getWriter();
out.print(jsonResponse);
}
}
访问地址
http://localhost:8080/your-app/api/user
例3:返回图片(JPG)
@WebServlet("/image")
public class ImageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
// 设置响应类型为 JPEG 图片
response.setContentType("image/jpeg");
// 读取图片文件并输出到响应流
FileInputStream fis = new FileInputStream("/path/to/image.jpg");
ServletOutputStream out = response.getOutputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = fis.read(buffer)) != -1) {
out.write(buffer, 0, bytesRead);
}
fis.close();
out.flush();
}
}
MIME类型对照表
类型 | 示例值 | 适用场景 |
HTML 文档 | `text/html` | 返回网页内容 |
纯文本 | `text/plain` | 日志、调试信息 |
JSON 数据 | `application/json` | RESTful API |
XML 数据 | `application/xml` | 旧系统接口 |
表单提交 | `application/x-www-form-urlencoded` | 默认表单提交类型 |
上传文件 | `multipart/form-data` | 文件上传 |
PDF 文件 | `application/pdf` | 浏览器在线预览 PDF |
JPEG 图片 | `image/jpeg` | 显示 JPG 图片 |
PNG 图片 | `image/png` | 显示 PNG 图片 |
CSV 文件 | `text/csv` | 下载 CSV 数据 |
setContentType()示例分享
场景 | 使用方式 |
返回HTML页面 | `setContentType("text/html")` |
提供JSON接口 | `setContentType("application/json")` |
文件下载 | `setContentType("application/octet-stream")`
并设置 `Content-Disposition` |
图片验证码生成 | `setContentType("image/png")` |
导出Excel/CSV报表 | `setContentType("text/csv")` 或 `application/vnd.ms-excel` |
返回XML数据 | `setContentType("application/xml")` |