@ResponseBody, @ModelAttribute, Model 인터페이스
2024. 3. 18. 20:08ㆍBackend 취업준비/Spring
@RequestBody
- 요청 본문의 JSON, XML, Text 등의 데이터가 적합한 HttpMessageConverter를 통해 파싱되어 Java 객체로 변환 된다.
- API에서 사용
- StringHttpMessageConverter
- StringHttpMessageConverter는 HTTP 요청 및 응답의 문자열 페이로드를 처리
- 문자열로 변환하거나 문자열을 객체로 변환하는 데 사용
- MappingJackson2HttpMessageConverter:
- MappingJackson2HttpMessageConverter는 JSON 데이터를 HTTP 요청 및 응답에서 처리하는 데 사용
- JSON 데이터를 Java 객체로 변환하거나 Java 객체를 JSON으로 변환하는 데 사용
- StringHttpMessageConverter와 MappingJackson2HttpMessageConverter는 둘 다 내부적으로 ObjectMapper를 사용하여 직렬화, 역 직렬화를 한다
ObjectMapper클래스 ⇒ Jackson라이브러리에서 제공
- ObjectMapper는 JSON 오브젝트의 필드를 Java 오브젝트의 필드에 맵핑할 때 getter 혹은 setter 메서드를 사용한다.
- getter나 setter 메서드 명의 접두사(get, set)를 지우고, 나머지 문자의 첫 문자를 소문자로 변환한 문자열을 참조하여 필드명을 알아낸다
- 직렬화를 위해 기본 생성자는 필수다.
- 또한 데이터 바인딩을 위한 필드명을 알아내기 위해 getter나 setter 중 1가지는 정의되어 있어야 한다
@ModelAttribute
- 클라이언트가 보내는 HTTP 파라미터들을 특정 Java Object에 바인딩(맵핑) 하는 것 역할
- /modelattribute?name=req&age=1 같은 Query String 형태 혹은 요청 본문에 삽입되는 Form 형태의 데이터를 처리하여 자바 객체에 맵핑
- 객체의 필드에 접근해 데이터를 바인딩할 수 있는 생성자 혹은 setter 메서드가 필요
- Query String 및 Form 형식이 아닌 데이터는 처리할 수 없다. (JSON 형태 불가)
- 타임리프와 함께 사용되어 뷰를 랜더링 할 때 사용
Model 인터페이스
- import org.springframework.ui.Model; 하여 사용
- Map 인터페이스의 확장
- Model은 자바의 Map 인터페이스를 확장합니다. 따라서 데이터를 추가, 조회, 제거할 수 있는 메서드들을 제공
- 주로 addAttribute() 메서드를 사용하여 데이터를 추가하고, 뷰에서는 해당 데이터를 키를 통해 조회할 수 있습니다
- 뷰와 컨트롤러 간의 중개 역할
- Model은 뷰와 컨트롤러 간의 중개 역할을 합니다. 컨트롤러는 데이터를 Model 객체에 추가하고, 뷰는 해당 데이터를 사용하여 화면을 렌더링, 타임리프와 함께 사용
출처
https://tecoble.techcourse.co.kr/post/2021-05-11-requestbody-modelattribute/
'Backend 취업준비 > Spring' 카테고리의 다른 글
스프링 시큐리티 (0) | 2024.03.20 |
---|---|
Servlet Filter, Spring Intercepter (0) | 2024.03.19 |
스프링 Data Jpa로 API 만들기 (0) | 2024.03.16 |
HTTP응답을 처리하는 방식 (@Controller, @RestController) (0) | 2024.03.09 |
JDBC 흐름 정리 (0) | 2024.03.08 |