오늘은 Spring MVC의 구조와 핵심 요소인 Controller에 대해 공부했다. 이를 통해 Spring MVC가 무엇인지, 그리고 Controller가 어떤 역할을 하는지에 대해 정리해보자.
MVC 패턴: Model, View, Controller의 약자로 웹 애플리케이션을 구조적으로 설계하기 위한 디자인 패턴이다.
Spring MVC의 역할:
DispatcherServlet은 Spring MVC의 핵심 프론트 컨트롤러로, 모든 웹 요청을 중앙에서 처리한다.
요청 처리 과정:
DispatcherServlet
이 이를 받아 적절한 Controller로 전달한다.DispatcherServlet
은 결과를 View로 전달하여 클라이언트에게 최종 응답을 보낸다.@Controller
애노테이션을 통해 정의되며, 각 메서드는 URL 요청과 매핑되어 요청을 처리한다.@RequestMapping
은 URL 요청을 Controller의 메서드에 매핑하는 데 사용되며, 클래스 레벨과 메서드 레벨 모두에서 활용할 수 있다.@Controller
@RequestMapping("/user") // 클래스 레벨 매핑: /user 경로를 기본으로 설정
public class UserController {
@GetMapping("/login")
public String login() {
// 로그인 처리
return "login";
}
@GetMapping("/logout")
public String logout() {
// 로그아웃 처리
return "logout";
}
@GetMapping("/signup")
public String signup() {
// 회원가입 페이지 제공
return "signup";
}
@PostMapping("/signup")
public String registerUser(SignupRequestDto requestDto) {
// 회원가입 처리
return "redirect:/user/login";
}
}
/user/login
, /user/logout
, /user/signup
과 같이 유사한 경로를 한 Controller에서 관리할 수 있다.@RequestMapping
을 클래스 레벨에 사용하고, 각 메서드에 @GetMapping
과 @PostMapping
을 사용해 다양한 요청을 처리한다.Model
객체를 통해 데이터를 View로 전달할 수 있다.model.addAttribute("key", value)
형태로 데이터를 추가하면 View에서 해당 데이터를 사용할 수 있다.DispatcherServlet
은 모든 요청을 중앙에서 처리하며, Controller는 @RequestMapping
애노테이션을 통해 URL과 메서드를 매핑하여 효율적으로 API를 관리한다.@RequestMapping
과 @GetMapping
, @PostMapping
을 적절히 사용하면 유사한 API를 하나의 Controller에서 관리할 수 있다.