[java] 서블릿에서의 JSON 처리 방법

서블릿은 자바를 기반으로 동적인 웹 어플리케이션을 개발하기 위해 사용되며, 클라이언트로부터 요청을 받고 응답을 생성하는 역할을 합니다. 이번 블로그 포스트에서는 서블릿에서 JSON을 처리하는 방법을 소개하도록 하겠습니다.

1. JSON 라이브러리 추가

서블릿에서 JSON을 처리하기 위해서는 먼저 JSON 라이브러리를 프로젝트에 추가해야 합니다. 대표적인 JSON 라이브러리로는 GsonJackson이 있습니다. 이들의 사용법은 차이가 있지만, 대부분의 기능은 비슷하게 제공됩니다.

Maven을 사용하는 경우, pom.xml 파일에 아래와 같이 의존성을 추가하면 됩니다.

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.8</version>
</dependency>

2. JSON 생성하기

서블릿에서 JSON을 생성하기 위해서는 JSON 객체를 생성하고 필요한 속성을 설정해야 합니다. Gson을 사용하는 경우, 아래와 같은 코드를 사용하여 JSON을 생성할 수 있습니다.

import com.google.gson.Gson;

...

public class MyServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // JSON 생성
        MyData data = new MyData();
        data.setName("John");
        data.setAge(25);
        Gson gson = new Gson();
        String json = gson.toJson(data);
        
        // 응답 설정
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        out.write(json);
        out.flush();
        out.close();
    }
}

3. JSON 파싱하기

클라이언트로부터 전달받은 JSON 데이터를 서블릿에서 파싱하여 사용해야 할 경우도 있습니다. Gson을 사용하여 JSON을 파싱하는 예제 코드는 아래와 같습니다.

import com.google.gson.Gson;

...

@WebServlet("/data")
public class MyServlet extends HttpServlet {

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // JSON 파싱
        BufferedReader reader = request.getReader();
        Gson gson = new Gson();
        MyData data = gson.fromJson(reader, MyData.class);
        // data 객체를 사용하여 필요한 작업 수행
        
        // 응답 설정
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        out.write("Success");
        out.flush();
        out.close();
    }
}

위의 예제 코드에서 MyData 클래스는 JSON 데이터의 구조를 반영한 Java 클래스입니다. Gson은 JSON 데이터를 Java 객체로 파싱할 때, 클래스의 속성 이름과 JSON 키값이 일치해야 합니다.

결론

이번 포스트에서는 서블릿에서 JSON을 처리하는 방법에 대해 알아보았습니다. 서블릿에서 JSON을 생성하고 파싱하는 방법을 익히면, 더 유연하고 동적인 웹 어플리케이션을 개발할 수 있을 것입니다. Gson 외에도 Jackson 등 다른 JSON 라이브러리를 사용할 수도 있으니, 프로젝트의 요구에 맞게 선택해보세요.

참고 자료