예전에 스프링 애플리케이션에서 서버에서 처리한 결과를 리턴할 때 많이 쓰던 방식은
Model, ModelAndView 같은 객체에 결과 데이터를 담고 ( model.addAttribute() / mv.addObject() )
뷰 경로명을 리턴해주면 ( return “뷰 경로” / mv.setViewName(”뷰 경로”) )
ViewResolver로 해당 뷰를 찾고 데이터를 넘겨주어 최종 결과를 완성해서 표시해주는 방식이었다.
근데 이렇게 결과 데이터를 view의 그릇에 담아 표시하는 방식이 아닌
HTTP 응답 몸체(HTTP Response의 Body 부분)에 처리결과를 직접 담아서 바로 내보내 주고, 클라이언트에선 이를 JSON 형태로 받아서 볼 수 있는 방식이 있다.
→ 이를 이용하면 view 없이도 처리결과를 json 형식으로 간편하게 받아 볼 수 있음 → 편리함
@RequestMapping(value = "/getUser", method = RequestMethod.GET)
public @ResponseBody UserDTO getUser(Integer id) { //@ResponseBody <---- 이게 붙은 방식
logger.info("==========[UserController.getUser]==========");
UserDTO resTeo = userDaoIbatis.selectUserById(id);
return resTeo;
}
//애노테이션 적으로는 해당 컨트롤러에 @ResponseBody 를 사용한 방식.
HTTP Response Body에 처리결과를 직접 적재해서 클라이언트로 보내는 방법
이렇게 하기 위해선 다음 3가지 설정이 필요하다
- (1) JSON Mapper 라이브러리 추가: ‘jackson-mapper-asl’
- (2) <annotation-driven/> 태그 사용 (servlet 설정 xml 안에서 ex: servlet-context.xml)
- (3) 해당 컨트롤러 메서드에 @ResponseBody 애노테이션 처리
(1) json mapper 라이브러리 추가
(2) servlet 설정 xml에서 <annotation-driven/> 설정 넣기
(3) 해당 컨트롤러 부분에 @ResponseBody 적기
⇒ 이렇게 함으로써 서버에서 처리된 결과는 HTTP Response Body에 직접 매핑되어 적재되고, 바로 클라이언트로 리턴될 수 있다.
'Framework > Spring Framework' 카테고리의 다른 글
[Spring][iBatis] iBatis를 스프링에 세팅할 때 ‘SqlMapClientTemplate’ 클래스를 얻어오기 위한 라이브러리로 쓸 수 있는 2가지 라이브러리 (0) | 2022.03.18 |
---|---|
[Spring][iBatis] 스프링 환경에서 데이터베이스 접근 기술을 iBatis로 세팅하는 방법 및 사용 방법 (0) | 2022.03.18 |
[Spring] 제어의 역행(IoC) (0) | 2022.03.12 |
[Spring] 스프링에서 멤버 필드에 의존성 주입을 표현할 때 'final'은 괜찮지만 'static final'은 안되는 이유 (0) | 2022.03.05 |