Controller의 리턴 타입
스프링 MVC의 구조가 기존의 상속과 인터페이스에서 어노테이션을 사용하는 방식으로
변한 이후에 가장 큰 변화 중 하나는 리턴 타입이 자유로워 졌다는 점입니다.
Controller의 메서드가 사용할 수 있는 리턴 타입은 주로 다음과 같습니다.
• String: jsp를 이용하는 경우에는 jsp 파일의 경로와 파일이름을 나타내기 위해서 사용합니다.
• void: 호출하는 URL과 동일한 이름의 jsp를 의미합니다.
• VO, DTO 타입 : 주로 JSON 타입의 데이터를 만들어서 반환하는 용도로 사용합니다.
• ResponseEntity 타입 : response 할 때 Http 헤더 정보와 내용을 가공하는 용도로 사용합니다.
• Model, ModelAndView: Model로 데이터를 반환하거나 화면까지 같이 지정하는 경우에 사용합니
다{최근에는 많이 사용하지 않습니다.).
• HttpHeaders: 응답에 내용 없이 Http 헤더 메시지만 전달하는 용도로 사용합니다
Void 타입
메서드의 리턴 타입을 void로 지정하는 경우 일반적인 경우에는 해당 URL의 경로를 그
대로 jsp 파일의 이름으로 사용하게 됩니다.
String 타입
void 타입과 더불어서 가장 많이 사용하는 것은 String 타입입니다. String 타입은 상황
에 따라 다른 화면을 보여줄 필요가 있을 경우에 유용하게 사용합니다(if else와 같은
처리가 필요한 상황). 일반적으로 String 타입은 현재 프로젝트의 경우 JSP 파일의 이름
을 의미합니다. 프로젝트 생성 시 기본으로 만들어진 HomeController의 코드를 보면
String을 반환 타입으로 사용하는 것을 볼 수 있습니다.
String 타입에는 다음과 같은 특별한 키워드를 붙여서 사용할 수 있습니다.
• redirect: 리다이렉트 방식으로 처리하는 경우
• forward: 포워드 방식으로 처리하는 경우
객체 타입
Controller 의 메서드 리턴 타입을 VO (Value Object) 나 DTO(Data Transfer Object)
타입 등 복합적인 데이터가 들어간 객체 타입으로 지정할 수 있는데,이 경우는 주로
JSON 데이터를 만들어 내는 용도로 사용합니다.
우선 이를 위해사는 jackson-databind 라이브러리를 pom.xml에 추가합니다
ResponseEntity 타입
Web을 다루다 보면 HTTP 프로토콜의 헤더를 다루는 경우도 종종 있습니다. 스프링
MVC의 사상은 HttpServletRequest나 HttpServletResponse를 직접 핸들링하지 않
아도 이런 작업이 가능하도록 작성되었기 때문에 이러한 처리를 위해 ResponseEntity
를 통해서 원하는 헤더 정보나 데이터를 전달할 수 있습니다.
ResponseEntity 는 HttpHeaders 객체를 같이 전달할 수 있고, 이를 통해서 원하는
HTTP 헤더 메시지를 가공하는 것이 가능합니다.
'BackEnd > Spring' 카테고리의 다른 글
http 에러코드 (0) | 2020.02.10 |
---|---|
Controller 작성시 예외 상황 (0) | 2020.02.09 |
Autowired 와 Resource 와 lnject 어노테이션정리 (0) | 2020.02.09 |
스프링 컨테이너 계층 구조 (0) | 2020.02.08 |
스프링 mvc의 기본 구조 (0) | 2020.02.08 |