본문 바로가기

BackEnd/Spring

컨트롤러의 리턴타입

반응형

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