@Controller
- Spring MVC 컨트롤러를 선언할때 주로 사용
- HTML View를 생성하거나 JSP와 같은 뷰 템플릿 엔진을 사용하여 웹 애플리케이션의 사용자 인터페이스를 생성하는데 사용
@RestController
- RESTFul 웹 서비스를 제공하는데 사용
- 메서드 반환값 👉 HTTP 응답 본문에 쓰여진다. (Ajax 요청 응답에 적합)
: HTTP 응답 본문으로 JSON, XML 또는 기타 형식의 데이터로 반환
- Ajax를 사용하여 서버와 비동기적 통신 시 사용
Ajax (비동기화 통신)
- 비동기적으로 서버와 브라우저간에 데이터를 교환할 수 있는 웹 개발 기술
: 새로고침 하지 않아도 데이터를 서버로부터 가져와 브라우저 동적 업데이트
: 주로 JavaScript 구현, jQuery 사용시 더 쉽게 Ajax요청 가능
Ajax 요청 처리
- 주로 JSON 형식으로 데이터를 주고받기 때문에,
Spring에서 Jackson 라이브러리를 사용하여 JSON 데이터를 객체로 변환하거나,
객체를 JSON 데이터로 변환하는 기능을 제공
어노테이션
@RequestBody
: HTTP 요청 본문에서 데이터 추출
@ResponseBody
: 메서드가 반환하는 데이터를 HTTP 응답 본문에 사용 가능
@RestController
클래스 - HTTP 메서드와 URL 패턴을 처리할 수 있는 어노테이션 사용
: PostMapping
, @GetMapping
, @PutMapping
, @DeleteMapping
- Ajax 요청을 처리하는 Spring 컨트롤러에서는
@RequestBody
어노테이션을 사용하여 HTTP 요청 본문에서 데이터를 추출
@ResponseBody
어노테이션을 사용하여 메서드가 반환하는 데이터를
HTTP 응답 본문에 직접 사용 가능
코드
$.ajax({
url:contextPath+"/test",
생략..
});
@Controller
@Controller
public class TestController {
@Autowired
private TestService service;
@RequestMapping("/test")
public String tests(){
return service.test();
}
}
- tests() 메서드가 String 타입인 "test"를 반환하고 있으므로,
"test"라는 View 이름을 가진 View를 반환
@RestController
@RestController
public class TestController {
@Autowired
private TestService service;
@RequestMapping("/test")
public String tests(){
return service.test();
}
}
- tests() 메서드에서는 String을 반환하고 있으므로,
반환된 String은 JSON 형식으로 자동 변환되어 클라이언트에게 전송