Spring MVC(Model-View-Controller)는 Spring Framework에서 제공하는 웹 애플리케이션 개발을 위한 모듈입니다.
웹 요청과 응답을 처리하고, 비즈니스 로직과 UI를 효과적으로 분리할 수 있도록 설계되었습니다.
Spring MVC는 요청(Request)이 들어왔을 때 이를 적절히 처리하고 응답(Response)을 반환하는 흐름을 제공합니다.
다음은 Spring MVC의 주요 동작 과정을 설명합니다:
클라이언트 요청
사용자가 브라우저 또는 API 클라이언트를 통해 요청을 보냅니다.
DispatcherServlet
모든 요청은 DispatcherServlet에서 시작됩니다. 이 서블릿은 요청을 분석하고 알맞은 컨트롤러로 전달하는 역할을 합니다.
HandlerMapping
요청 URL과 매핑되는 컨트롤러를 찾습니다. (예: /users
요청은 UserController
로 매핑)
Controller
비즈니스 로직을 처리하거나 서비스(Service) 계층과 소통하여 필요한 데이터를 가져옵니다.
ViewResolver
컨트롤러가 반환한 뷰 이름(View Name)을 기반으로 실제 뷰(HTML, JSP, Thymeleaf 등)를 찾습니다.
응답 반환
최종적으로 뷰(View)를 렌더링하여 클라이언트에게 응답을 반환합니다.
@Controller
또는 @RestController
로 컨트롤러를 정의합니다.@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
// 비즈니스 로직 수행
User user = userService.findById(id);
return ResponseEntity.ok(user);
}
}
@Controller
public class GreetingController {
@GetMapping("/greeting")
public String greeting(Model model) {
model.addAttribute("message", "Hello, Spring MVC!");
return "greeting";
}
}
@RequestMapping
: 특정 URL에 컨트롤러나 메서드를 매핑합니다.@GetMapping
(GET 요청)@PostMapping
(POST 요청)@PutMapping
(PUT 요청)@DeleteMapping
(DELETE 요청)@PathVariable
: URL 경로 변수 매핑@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) { ... }
@RequestParam
: 쿼리 파라미터 매핑@GetMapping("/search")
public List<User> search(@RequestParam String keyword) { ... }
@ResponseBody
: 메서드 반환값을 JSON 또는 XML 형식으로 응답@RestController
: @Controller
+ @ResponseBody
역할 수행@ModelAttribute
: 요청 데이터를 객체로 매핑@PostMapping("/users")
public String createUser(@ModelAttribute User user) { ... }
@RequestBody
: JSON 데이터를 객체로 변환@PostMapping("/users")
public ResponseEntity<User> createUser(@RequestBody User user) { ... }
요청과 응답의 분리
유연한 뷰 처리
유연한 확장성
RESTful API 지원
DispatcherServlet의 동작 과정 이해하기
요청 매핑 어노테이션 활용
@GetMapping
, @PostMapping
을 사용한 다양한 엔드포인트 구현.템플릿 엔진 활용
Rest API 설계와 구현
유효성 검증 추가
@Valid
와 Bean Validation을 사용하여 입력 데이터를 검증.에러 핸들링
@ControllerAdvice
와 @ExceptionHandler
를 사용해 전역 예외 처리 구현.Spring MVC는 웹 애플리케이션 개발에서 가장 중요한 구성 요소 중 하나입니다.
DispatcherServlet의 동작을 중심으로 학습을 시작하고, RESTful API와 템플릿 엔진을 통해 실습을 진행하면 효과적입니다.
추가 학습 자료