728x90
HelloData.java
package hello.servlet.basic;
import lombok.Getter;
import lombok.Setter;
@Getter
public class HelloData {
@Setter
private String username;
private int age;
}
롬복 사용하여 게터세터를 편리하게 하였다.
(롬복이 자동으로 게터세터 코드를 생성해줌)
RequsetBodyJsonServlet.java
RequestBodyJsonServlet.java 파일에서
@WebServlet(name = "~~", urlPatterns = "~~")등의 설정을 하고

postman에서 코드로 urlPatterns = "/request-body-json" 매핑해뒀던 것을 POST 옆에 적고
Postman상 Body - raw - (옆에 json 설정) - 키-값 쌍 형태로 코드를 치고 SEND를 누르면

json 값이 잘 받아지는 것을 볼 수 있다.
(json값은 키-값 쌍)
package hello.servlet.basic.request;
import com.fasterxml.jackson.databind.ObjectMapper;
import hello.servlet.basic.HelloData;
import jakarta.servlet.ServletException;
import jakarta.servlet.ServletInputStream;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.util.StreamUtils;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
@WebServlet(name = "requestBodyJsonServlet", urlPatterns = "/request-body-json")
public class RequestBodyJsonServlet extends HttpServlet {
//json 라이브러리
private ObjectMapper objectMapper = new ObjectMapper();
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletInputStream inputStream = request.getInputStream();
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.getUsername() = " + helloData.getAge());
response.getWriter().write("ok");
}
}
⬇️ json 처리 라이브러리인 Jackson라이브러리 사용
private ObjectMapper objectMapper = new ObjectMapper();
이 코드를 사용하면 된다.
- json결과를 파싱해서 사용할 수 있는 자바 객체로 변환하려면 json 변환 라이브러리 사용해야함.
+ 스프링부트로 Spring MVC를 선택하면 기본으로 Jackson라이브러리인 ObjectMapper를 제공한다.
그리고 postman에서 값을 보내면?

이렇게 객체 값으로 잘 들어오는 것을 볼 수 있다.