@RestController 어노테이션은 스프링 4 이상의 버전부터 지원하는 어노테이션으로, 컨트롤러 클래스에 @RestController 만 붙이면 메서드에 @ResponseBody 어노테이션을 붙이지 않아도 문자열과 JSON 등을 전송할 수 있습니다. 뷰를 리턴하는 메서드들을 가지고 있는 @Controller와는 다르게 @RestController는 문자열, 객체 등을 리턴하는 메서드들을 가지고 있습니다.
예시
@RestController
@RequestMapping("/main/*")
public class RestController {
@RequestMapping("/hello")
public String hello() {
return "hello";
}
}
http://localhost:8080/main/hello로 접속하면 "hello" 문자열이 전송된 것을 확인할 수 있습니다.
커맨드 객체를 전송하기 위해서는 JSON의 형태로 전송해야 하기 때문에 JSON 관련 라이브러리를 사용합니다.
pom.xml
<!--JSON-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.4</version>
</dependency>
pom.xml 파일에 위 코드를 붙여 넣기 합니다.
예시
@RestController
@RequestMapping("/main/*")
public class RestController {
@RequestMapping("/hello")
public UserVO hello() {
UserVO userVO = new userVO();
userVO.setUserId("yunyc");
userVO.setUserPassword("1234");
userVO.setEmail("yunyc1024@gmail.com");
return userVO;
}
}
커맨드 객체인 UserVO 객체를 생성하여 각 속성들의 값을 넣어준 다음 해당 객체를 반환합니다.
결과
{"id":"yunyc", "password":"1234", "email":"yunyc@gmail.com"}
http://localhost:8080/main/hello로 접속하면 위와 같이 JSON의 형태로 해당 URL로 전송됩니다.
컬렉션도 커맨드 객체와 마찬가지로 컬렉션 객체 속성 값을 세팅하고 리턴하면 JSON의 형태로 전송됩니다.
예시
@RestController
@RequestMapping("/main/*")
public class RestController {
@RequestMapping("/hello")
public List<UserVO> hello() {
List<UserVO> userList = userService.selectUserList();
for (int i = 0; i < 2; i++) {
UserVO userVO = new userVO();
userVO.setUserId("yunyc");
userVO.setUserPassword(i);
userVO.setEmail("yunyc@gmail.com");
userList.add(userVO);
}
return userList;
}
}
결과
{"id":"yunyc", "password":"0", "email":"yunyc@gmail.com"}
{"id":"yunyc", "password":"1", "email":"yunyc@gmail.com"}
{"id":"yunyc", "password":"2", "email":"yunyc@gmail.com"}
전달 방법은 커맨드 객체를 전달하는 방법과 같습니다.
예시
@RestController
@RequestMapping("/main/*")
public class RestController {
@RequestMapping("/hello")
public HashMap<String, Object> hello() {
HashMap<String, Object> hashMap = new HashMap<String, Object>();
hashMap.put("id", "yunyc");
hashMap.put("password", "1234");
hashMap.put("email", "yunyc@gmail.com");
return hashMap;
}
}
결과
{"id":"yunyc", "password":"1234", "email":"yunyc@gmail.com"}
[Spring] 스프링 이클립스와 톰캣 연동하기 (0) | 2020.09.27 |
---|---|
[Spring] 스프링 @RequestBody, @ResponseBody 사용하기 (0) | 2020.09.27 |
[Spring] 스프링 JUnit을 이용하여 코드 테스트하기 (0) | 2020.09.27 |
[Spring] 스프링에서 파일 업로드하기 (0) | 2020.09.27 |
[Spring] 스프링 HttpServletRequest, @RequestParam, @ModelAttribute를 이용하여 파라미터 받기 (0) | 2020.09.26 |