Controller의 메서드가 사용할 수 있는 리턴 타입

 

* String : jsp를 이용하는 경우에는 jsp 파일의 경로와 파일이름을 나타내기 위해서 사용

* void : 호출하는 URL과 동일한 이름의 jsp를 의미합니다.

* VO, DTO 타입 : 주로 JSON 타입의 데이터를 만들어서 반환하는 용도로 사용합니다.

* ResponseEntity 타입 : response 할 때 Http 헤더 정보와 내용을 가공하는 용도로 사용합니다.

* Model, ModelAndView : Model로 데이터를 반환하거나 화면까지 같이 지정하는 경우에 사용합니다.

* HttpHeaders : 응답에 내용 없이 Http 헤더 메시지만 전달하는 용도로 사용합니다.


VO, DTO 와 같은 객체 타입

* 메이븐을 사용하는 경우 pom.xml에 의존을 추가합니다.

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.4</version>
</dependency>

 

메서드 반환형 앞에 @ResponseBody 어노테이션을 사용합니다. 스프링 MVC가 객체를 JSON 타입으로 변환해서 전달합니다.

public class Sample {

	@GetMapping("/ex01")
	public @ResponseBody SampleDTO ex01() {
		SampleDTO dto = new SampleDTO();
		dto.setName("홍길동");
		return dto;
	}
}

ResponseEntity 타입

원하는 헤더 정보나 데이터를 전달할 수 있습니다. ResponseEntity는 HttpHeaders 객체를 같이 전달할 수 있고 이를 통해서 원하는 HTTP 헤더 메시지를 가공하는 것이 가능합니다.

public class Sample {

	@GetMapping("/ex02")
	public ResponseEntity<String> ex02() {
		String msg = "{\"name\":\"홍길동\"}";
		
		HttpHeaders header = new HttpHeaders();
		header.add("Content-Type", "application/json;charset=UTF-8");
		
		return new ResponseEntity<>(msg, header, HttpStatus.OK);
	}
}

 

+ Recent posts