♪ 학습 내용
HTML FORM 데이터 전송 / 메시지 바디에 직접 데이터 전송
* HTML FORM 데이터 전송
HTML의 FORM에 클라이언트가 입력한 데이터를 서버로 전송 !!
POST의 HTML FORM을 전송하면 HTTP 메시지가 만들어지며 전달된다.
content-type은 바디에 포함된 데이터가 어떤 형식인지 알려주는 헤더이다.
message body에 들어갈 데이터가 있으므로 content-type이 있다.
(GET url 쿼리 파라미터 조회 시에는 body 내에 데이터가 없으므로 content-type도 없다)
해당 content-type 형식(x-www-form)은 데이터를 쿼리 파라미터 형식으로 전달한다
GET url 쿼리 파라미터 조회와 똑같은 쿼리 파라미터 형식으로 데이터가 전달되므로
같은 request-param 서블릿의 조회 메서드 그대로 사용이 가능하다.
request.getParameter("이름");
위에처럼 HTML FORM을 따로 만들지 않고 PostMan으로도 테스트 가능!
* HTTP message body 데이터 전달
HTTP 메시지 바디에 데이터를 직접 담아서 요청할 때는 주로 JSON, XML, TEXT 형식으로 데이터를 전달한다.
(거의 JSON 형식을 주로)
- TEXT
text 형식으로 데이터를 전달할 때 content-type 헤더는 text / plain
request.getInputStream();
inputStream 은 message body 내의 데이터를 byte 코드로 반환한다.
이 반환 값을 우리가 읽을 수 있는 문자로 변환하기 위해서 Spring이 제공하는 유틸리티를 이용하였다.
StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
두번째 인자로 인코딩 정보를 입력!
추가로 postman에서 메시지 바디에 TEXT를 넣어 전달, Content-Type 헤더 text / plain 확인.
하지만 이런 식으로 문자를 주고받기 보다는 주로 JSON 을 이용..!
- JSON
JSON 을 전달할 때 content-type 헤더는 application / json
JSON은 보통 객체로 바꾸어 사용한다.
따라서 데이터를 json 형식으로 파싱할 수 있게 객체를 생성하기 위한 클래스 작성
어쨋거나 message body 내의 데이터를 읽어야 하므로 text와 같은 과정을 가진다.
( request.getInputStream() / 자바 유틸리티 이용 )
이렇게 까지 하고 읽은 데이터를 출력하면 다음 결과를 확인할 수 있다.
이처럼 JSON도 그냥 문자일 뿐이다.
JSON 결과를 파싱해서 자바 객체로 변환하기 위해서는 JSON 변환 라이브러리가 필요하다(Jackson 이나 Gson ..)
다행히도 Spring은 Jackson 라이브러리를 제공하므로 Jackson을 이용해 객체로 변환
Jackson 라이브러리의 ObjectMapper를 이용해 json을 HelloData로 변환 !!
JSON 데이터를 객체로 변환하였으므로 get / set 메서드를 사용할 수 있다.
♪ 다음 학습 내용
HttpServletResponse 사용
'Dev > Spring' 카테고리의 다른 글
[Spring MVC 1] 서블릿/JSP/MVC (1) (0) | 2023.01.22 |
---|---|
[Spring MVC 1] 서블릿 (4) (0) | 2023.01.15 |
[Spring MVC 1] 서블릿 (2) (0) | 2023.01.13 |
[Spring MVC 1] 서블릿 (1) (0) | 2023.01.11 |
[Spring MVC 1] 웹 애플리케이션의 이해 (0) | 2023.01.07 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!