Hansel

3. 스프링 MVC 기본 기능 2 본문

Spring/MVC

3. 스프링 MVC 기본 기능 2

핑슬 2022. 3. 26. 14:47

 

 

ModelAttribute


스프링에서 string int integer 같은 단순 타입은 requestParam으로 처리하고
나머지는 modelAttribute로 처리한다.

 

ModelAttribute는 파라미터에 맞게 객체를 생성한다. 요청 파라미터의 이름으로 객체의 프로퍼티를 찾고 해당 프로퍼티의 setter를 호출해서 파라미터의 값을 입력(바인딩) 한다.

예) 파라미터 이름이 username 이면 setUsername() 메서드를 찾아서 호출하면서 값을 입력한다.

 

HTTP 바디 데이터 가져오기

스프링 MVC는 다음 파라미터를 지원한다.
HttpEntityHTTP header, body 정보를 편리하게 조회

  • 메시지 바디 정보를 직접 조회
  • HttpEntity는 응답에도 사용 가능
  • 메시지 바디 정보 직접 반환
  • 헤더 정보 포함 가능

HttpEntity 간소화

 

HTTP 바디를 Json 형식으로 조회


@RequestBody 에 직접 만든 객체를 지정할 수 있다.
HttpEntity , @RequestBody 를 사용하면 HTTP 메시지 컨버터가 HTTP 메시지 바디의 내용을 우리가
원하는 문자나 객체 등으로 변환해준다.
HTTP 메시지 컨버터는 문자 뿐만 아니라 JSON도 객체로 변환해준다.

=> requestBody는 http 바디에서 데이터를 가져온다.
=> modelAttribute는 파라미터(url)에서 가져온다

 

Json 형식 반환

@RequestBody 요청
JSON 요청 ->  HTTP 메시지 컨버터 -> 객체


@ResponseBody 응답
객체 ->  HTTP 메시지 컨버터 -> JSON 응답

 

@RestController


@Controller 대신에 @RestController 애노테이션을 사용하면, 해당 컨트롤러에 모두
@ResponseBody 가 적용되는 효과가 있다.

 

@Controller반환 값이 String 이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 뷰가 랜더링 된다.

 

@RestController반환 값으로 찾는 것이 아니라, HTTP 메시지 바디에 바로 입력한다.

 

Controller에서 RestController처럼 반환 값으로 뷰를 찾는 것이 아닌 메시지 바디에 입력하길 원한다면 

@ResponseBody 애노테이션을 사용하면 된다. 

 

@RestController 에노테이션 안에 @ResponseBody 가 적용되어 있다.

'Spring > MVC' 카테고리의 다른 글

6. 메세지와 국제화  (0) 2022.03.29
5. 스프링 MVC / 기타  (0) 2022.03.26
4. 스프링 MVC / 타임리프 기본  (0) 2022.03.26
2. 스프링 MVC 기본 기능 1  (0) 2022.03.26
1. 스프링 MVC 패턴  (0) 2022.03.26