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-api 및 gson .
또한 애플리케이션을 배포할 서블릿 컨테이너를 구성해야 합니다. 이 기사 는 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 서블릿의 경우 응답을 채우는 올바른 절차:
- 응답에서 출력 스트림 검색
- 응답 헤더를 채우십시오.
- 출력 스트림에 내용 쓰기
- 응답 커밋
응답에서 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 에서 찾을 수 있습니다 .