Coding/Servlet

HTTP 요청 데이터 - json값 주고받기

민톨이 2024. 10. 2. 23:06
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에서 값을 보내면?

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