서블릿은 자바를 기반으로 동적인 웹 어플리케이션을 개발하기 위해 사용되며, 클라이언트로부터 요청을 받고 응답을 생성하는 역할을 합니다. 이번 블로그 포스트에서는 서블릿에서 JSON을 처리하는 방법을 소개하도록 하겠습니다.
1. JSON 라이브러리 추가
서블릿에서 JSON을 처리하기 위해서는 먼저 JSON 라이브러리를 프로젝트에 추가해야 합니다. 대표적인 JSON 라이브러리로는 Gson
과 Jackson
이 있습니다. 이들의 사용법은 차이가 있지만, 대부분의 기능은 비슷하게 제공됩니다.
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 라이브러리를 사용할 수도 있으니, 프로젝트의 요구에 맞게 선택해보세요.
참고 자료
- Gson 공식 문서: https://sites.google.com/site/gson/gson-user-guide
- Jackson 공식 문서: https://github.com/FasterXML/jackson