Spring MVC는 Spring Framework의 웹 애플리케이션 개발을 위한 모듈로, MVC(Model-View-Controller) 아키텍처 패턴을 기반으로 합니다.
Spring MVC는 웹 요청의 처리, 데이터 바인딩, 뷰 렌더링 등의 기능을 제공하여 웹 개발을 단순화하고 구조화합니다.
1. Spring MVC 아키텍처
Spring MVC의 주요 구성 요소는 다음과 같습니다.
- DispatcherServlet: 모든 HTTP 요청을 받아 처리하는 중앙 컨트롤러입니다.
- HandlerMapping: 요청 URL과 매핑되는 핸들러(컨트롤러)를 찾습니다.
- Controller: 요청을 처리하고 모델을 업데이트하며, 뷰를 선택합니다.
- ModelAndView: 컨트롤러에서 처리한 데이터와 뷰 정보를 담고 있습니다.
- ViewResolver: 뷰 이름을 기반으로 실제 뷰 객체를 찾습니다.
- View: 모델 데이터를 렌더링하여 응답을 생성합니다.
2. 컨트롤러
Spring MVC에서 컨트롤러는 요청 처리의 핵심 역할을 담당합니다. @Controller
어노테이션을 사용하여 클래스를 컨트롤러로 지정하고, 각 메서드에 @RequestMapping
, @GetMapping
, @PostMapping
등의 어노테이션을 사용하여 요청 URL과 HTTP 메서드를 매핑합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
@Controller
@RequestMapping(“/users”)
public class UserController {
@GetMapping(“/{id}”)
public String getUser(@PathVariable Long id, Model model) {
// 사용자 정보 조회
model.addAttribute(“user”, user);
return “user”;
}
@PostMapping
public String createUser(@ModelAttribute User user) {
// 사용자 생성
return “redirect:/users/” + user.getId();
}
}
|
cs |
3. 데이터 바인딩
Spring MVC는 요청 파라미터, 패스 변수, 요청 본문 등의 데이터를 객체에 자동으로 바인딩해주는 기능을 제공합니다.
@RequestParam
, @PathVariable
, @ModelAttribute
, @RequestBody
등의 어노테이션을 사용하여 데이터 바인딩을 설정할 수 있습니다.
1
2
3
4
5
|
@PostMapping
public String updateUser(@RequestParam Long id, @ModelAttribute User user) {
// 사용자 정보 업데이트
return “redirect:/users/” + id;
}
|
cs |
4. 뷰 리졸버
Spring MVC는 다양한 유형의 뷰 리졸버를 지원하여 뷰 이름을 기반으로 실제 뷰 객체를 찾아줍니다.
대표적인 뷰 리졸버로는 InternalResourceViewResolver
(JSP), ThymeleafViewResolver
(Thymeleaf), FreeMarkerViewResolver
(FreeMarker) 등이 있습니다.
1
2
3
4
|
<bean id=“viewResolver” class=“org.springframework.web.servlet.view.InternalResourceViewResolver”>
<property name=“prefix” value=“/WEB-INF/views/” />
<property name=“suffix” value=“.jsp” />
</bean>
|
cs |
5. 예외 처리
Spring MVC는 예외 처리를 위한 다양한 방법을 제공합니다.
@ExceptionHandler
어노테이션을 사용하여 컨트롤러 내에서 예외를 처리할 수 있고, @ControllerAdvice
를 사용하여 전역적인 예외 처리를 구현할 수 있습니다.
1
2
3
4
5
6
7
8
|
@ControllerAdvice
public class GlobalExceptionHandler {
@ExceptionHandler(UserNotFoundException.class)
public String handleUserNotFoundException(UserNotFoundException ex, Model model) {
model.addAttribute(“errorMessage”, ex.getMessage());
return “error”;
}
}
|
cs |
Spring MVC는 웹 개발을 위한 강력하고 유연한 프레임워크로, 다양한 기능과 확장 포인트를 제공합니다.
Spring MVC를 활용하면 구조화되고 유지보수 가능한 웹 애플리케이션을 효과적으로 개발할 수 있습니다.