知識庫 / JSON RSS 訂閱

從 Servlet 返回 JSON 響應

Jakarta EE,JSON
HongKong
9
09:55 PM · Dec 05 ,2025

1. 簡介

在本快速教程中,我們將創建一個小型 Web 應用程序,並探索如何從 Servlet 返回 JSON 響應。

2. Maven

對於我們的Web應用程序,我們將包含 jakarta.servlet-api 和 Gson 依賴項在我們的 pom.xml 中:

<dependency>
    <groupId>jakarta.servlet</groupId>
    <artifactId>jakarta.servlet-api</artifactId>
    <version>${jakarta.servlet.version}</version>
</dependency>
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>${gson.version}</version>
</dependency>

最新的依賴項可以在這裏找到:jakarta.servlet-apigson

我們還需要配置一個 Servlet 容器來部署我們的應用程序。 這篇文章是關於如何在 Tomcat 上部署 WAR 包的良好起點。

3. 創建實體

讓我們創建一個名為 Employee 的實體,該實體稍後將由 Servlet 以 JSON 格式返回:

public class Employee {
	
    private int id;
    
    private String name;
    
    private String department;
   
    private long salary;

    // constructors
    // standard getters and setters.
}

4. 對象轉 JSON

為了從 Servlet 發送 JSON 響應,我們首先需要將 Employee 對象轉換為其 JSON 格式的表示形式。

有許多 Java 庫可用於將對象轉換為其 JSON 表示形式(及反之)。其中最突出的包括 Gson 和 Jackson 庫。要了解 Gson 和 Jackson 之間的差異,請參閲這篇文章。

以下是使用 Gson 將對象轉換為 JSON 表示形式的快速示例:

String employeeJsonString = new Gson().toJson(employee);

5. 響應與內容類型

對於 HTTP Servlet,填充響應的正確流程如下:

  1. 檢索響應輸出流
  2. 填充響應頭
  3. 將內容寫入輸出流
  4. 提交響應

在響應中,<em >Content-Type</em> 頭告訴客户端返回內容的實際內容類型。

對於生成 JSON 響應,內容類型應設置為 <em >application/json</em>

PrintWriter out = response.getWriter();
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
out.print(employeeJsonString);
out.flush();

響應頭必須始終在提交響應之前設置。Web容器會忽略在響應提交後嘗試設置或添加任何頭部的嘗試。

調用 flush() 方法對 PrintWriter 進行調用會提交響應。

6. 示例 Servlet

現在讓我們來看一個返回 JSON 響應的示例 Servlet

@WebServlet(name = "EmployeeServlet", urlPatterns = "/employeeServlet")
public class EmployeeServlet extends HttpServlet {

    private Gson gson = new Gson();

    @Override
    protected void doGet(
      HttpServletRequest request, 
      HttpServletResponse response) throws IOException {
        
        Employee employee = new Employee(1, "Karan", "IT", 5000);
        String employeeJsonString = this.gson.toJson(employee);

        PrintWriter out = response.getWriter();
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        out.print(employeeJsonString);
        out.flush();   
    }
}

7. 結論

本文介紹瞭如何從 Servlet 返回 JSON 響應。這在利用 Servlet 實現 RESTful 服務,並應用於 Web 應用程序時非常有用。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.