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

欢喜 Servlet 发布时间:2025-05-27 16:25:40 阅读数:18633 1

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")`
版权声明

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

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

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

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

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者