Controller의 역할 및 특징
- 역할
- 뷰(View)를 반환하는 컨트롤러.
- 주요 특징
- 주로 HTML, JSP 같은 뷰 페이지를 반환
- @RequestMapping 또는 @GetMapping, @PostMapping 등의 어노테이션을 사용해 HTTP 요청을 매핑
- Model 객체를 이용하여 데이터와 뷰를 연결
- 반환값이 문자열(String)일 경우 기본적으로 ViewResolver가 실행되어 해당 문자열을 뷰 이름(view name)으로 간주하고, 뷰를 렌더링
@Controller
public class ExampleController {
@GetMapping("/hello")
public String hello(Model model) {
model.addAttribute("message", "Hello, World!");
return "hello"; // ViewResolver에 의해 "hello.jsp" 또는 "hello.html"로 매핑
}
}
- 응답 결과
- 브라우저에서 /hello 요청
- hello.jsp 또는 hello.html과 같은 뷰 페이지가 렌더링되어 클라이언트에게 반환
RestController의 역할 및 특징
- 역할
- JSON 또는 XML 등의 데이터를 반환하는 컨트롤러.
- 주요 특징
- HTTP Response Body에 데이터를 직접 반환
- @Controller와 다르게 @ResponseBody가 기본적으로 포함
- 주로 REST API를 구현할 때 사용
- 반환값은 문자열, 객체, 또는 컬렉션 등이 가능하며, Jackson 라이브러리에 의해 JSON 또는 XML로 직렬화
@RestController
public class ExampleRestController {
@GetMapping("/hello")
public String hello() {
return "Hello, World!";
}
@GetMapping("/user")
public User user() {
return new User("Kim", 30); // JSON으로 변환되어 반환
}
}
- 응답 결과
- 브라우저에서 /hello 요청 → "Hello, World!" 문자열이 그대로 반환
- /user 요청 → {"name": "Kim", "age": 30}과 같은 JSON 데이터가 반환
Controller와 RestController 차이점 비교표
특징 | @Controller | @RestController |
주요 목적 | 뷰(View) 렌더링 | JSON, XML 등의 데이터 반환 |
ResponseBody | 명시적으로 사용(@ResponseBody) | 자동 포함(@ResponseBody 내장) |
주로 사용되는 곳 | 웹 애플리케이션의 UI와 뷰 처리 | RESTful API 개발 |
반환 값 처리 방식 | 반환 값이 뷰 이름으로 해석 (ViewResolver 작동) |
반환 값을 JSON/XML로 변환하여 응답 본문에 포함 |
'Language > Spring' 카테고리의 다른 글
[JPA] N+1 문제 (1) | 2024.11.18 |
---|---|
[JPA] 엔티티 관계의 로딩 전략 - 즉시 로딩 / 지연 로딩 (1) | 2024.11.18 |
[Spring] DispatcherServlet의 개념과 흐름 (0) | 2024.11.17 |
[공통처리] Filter, Interceptor, AOP 차이점 및 흐름과 역할 (0) | 2024.11.15 |
[AOP] AOP란? (1) | 2024.11.14 |