1. 소개

이 빠른 사용방법(예제)에서는 작은 웹 애플리케이션을 만들고 Servlet 에서 JSON 응답을 반환하는 방법을 살펴봅니다 .

2. 메이븐

웹 애플리케이션 의 경우 pom.xml 에 javax.servlet-api  및 Gson 의존성을 포함합니다 .

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

의존성의 최신 버전은 여기에서 찾을 수 있습니다: javax.servlet-apigson .

또한 애플리케이션을 배포할 서블릿 컨테이너를 구성해야 합니다. 이 기사 는 Tomcat에서 WAR을 배포하는 방법을 시작하기에 좋은 곳입니다.

3. 엔터티 생성

나중에 서블릿 에서 JSON 으로 반환될 Employee 엔터티를 생성해 보겠습니다 .

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

    // constructors
    // standard getters and setters.
}

4. JSON에 대한 엔티티

서블릿 에서 JSON 응답을 보내려면 먼저 Employee 객체를 JSON 표현으로 변환 해야 합니다 .

개체를 JSON 표현으로 또는 그 반대로 변환하는 데 사용할 수 있는 많은 Java 라이브러리가 있습니다. 가장 눈에 띄는 것은 Gson 및 Jackson 라이브러리입니다. GSON과 Jackson의 차이점에 대해 알아보려면  이 기사 를 살펴보십시오 .

Gson을 사용하여 개체를 JSON 표현으로 변환하기 위한 빠른 샘플은 다음과 같습니다.

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

5. 응답 및 콘텐츠 유형

HTTP 서블릿의 경우 응답을 채우는 올바른 절차:

  1. 응답에서 출력 스트림 검색
  2. 응답 헤더를 채우십시오.
  3. 출력 스트림에 내용 쓰기
  4. 응답 커밋

응답에서 Content-Type 헤더는 클라이언트에게 반환된 콘텐츠의 콘텐츠 유형이 실제로 무엇인지 알려줍니다.

JSON 응답을 생성하려면 콘텐츠 유형이 application/json이어야 합니다.

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

응답 헤더는 항상 응답이 커밋되기 전에 설정되어야 합니다. 웹 컨테이너는 응답이 커밋된 후 헤더를 설정하거나 추가하려는 모든 시도를 무시합니다.

PrintWriter 에서 flush()호출 하면 응답이 커밋됩니다.

6. 서블릿 예

이제 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. 결론

이 기사에서는 서블릿에서 JSON 응답을 반환하는 방법을 보여주었습니다. 이는 서블릿을 사용하여 REST 서비스를 구현하는 웹 애플리케이션에서 유용합니다.

여기에 표시된 모든 코드 샘플 은 GitHub 에서 찾을 수 있습니다 .

res – REST with Spring (eBook) (everywhere)