[Servlet] HTTP 요청 데이터 - API 메시지 바디 (JSON)
- 📚 Spring/SpringMVC
- 2021. 10. 11. 13:42
목표 : 서블릿으로 JSON의 데이터를 객체화해서 받아오기
- JSON 결과를 파싱해서 사용할 수 있는 자바 객체로 변환하려면 Jackson, Gson 같은 JSON 변환
라이브러리를 추가해서 사용해야 한다. 스프링 부트로 Spring MVC를 선택하면 기본으로 Jackson
라이브러리( ObjectMapper )를 함께 제공한다.
package hello.servlet.basic;
import lombok.Data;
@Data
public class HelloData {
private String username;
private int age;
}
package hello.servlet.basic.request;
import com.fasterxml.jackson.databind.ObjectMapper;
import hello.servlet.basic.HelloData;
import org.springframework.util.StreamUtils;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@WebServlet(name = "requestBodyJsonServlet", urlPatterns = "/request-body-json")
public class RequestBodyJsonServlet extends HttpServlet {
private ObjectMapper objectMapper = new ObjectMapper();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletInputStream inputStream = request.getInputStream(); // HTTP Message Body 내용 전부 출력
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
System.out.println("messageBody = " + messageBody);
HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);
System.out.println("helloData.getUsername = " + helloData.getUsername());
System.out.println("helloData.age = " + helloData.getAge());
response.getWriter().write("ok");
}
}
JSON형식으로 하면 자동으로 Header가 JSON 형식으로 바뀐다.
결과
'📚 Spring > SpringMVC' 카테고리의 다른 글
[Sprng] 요청파라미터 > @ModelAttribute (0) | 2021.10.29 |
---|---|
[Spring] 요청 파라미터 > @RequestParam (0) | 2021.10.29 |
[Spring] consumes 와 produces의 차이 (0) | 2021.10.26 |
[Servlet] HTTP 응답 데이터 - API JSON (0) | 2021.10.11 |
웹 서버 / 웹 애플리케이션 서버 (0) | 2021.10.07 |