본문 바로가기
IT/spring

스프링 MVC 구조

by 뉴코딩맨 2023. 6. 23.
스프링 MVC는 웹 애플리케이션을 개발하기 위한 모델-뷰-컨트롤러(MVC) 아키텍처를 기반으로 한 스프링 프레임워크의 일부입니다. 스프링 MVC의 구조에 대해 알아보고, 예시를 통해 설명하겠습니다.

 

 

구조

스프링 MVC는 다음과 같은 구조로 이루어져 있습니다.
  1. 컨트롤러(Controller): 사용자의 요청을 처리하고, 비즈니스 로직을 수행하기 위한 핵심 로직을 담당합니다. 컨트롤러는 @Controller 어노테이션을 통해 정의되며, 요청 매핑과 메소드 핸들러를 사용하여 특정 URL에 대한 처리를 매핑합니다.
  2. 모델(Model): 데이터를 표현하는 객체로, 컨트롤러와 뷰 간의 데이터 전달을 담당합니다. 모델은 비즈니스 로직의 결과물이나 데이터베이스로부터 조회한 데이터 등을 담을 수 있습니다.
  3. 뷰(View): 사용자에게 결과를 표시하는 역할을 담당합니다. 일반적으로 HTML, JSP, Thymeleaf 등의 템플릿 엔진을 사용하여 동적인 콘텐츠를 생성하고, 클라이언트로 전송됩니다.
  4. 프론트 컨트롤러(Front Controller): 스프링 MVC의 핵심이자 진입점으로, 모든 요청의 처리를 중앙에서 관리합니다. 스프링에서는 DispatcherServlet이 프론트 컨트롤러의 역할을 수행하며, 요청을 적절한 핸들러(컨트롤러)로 전달하고, 처리 결과를 적절한 뷰로 포워딩합니다.
 
 

예시 설명

다음은 스프링 MVC 구조의 예시입니다.
@Controller
@RequestMapping("/users")
public class UserController {
    
    @Autowired
    private UserService userService;
    
    @GetMapping("/{id}")
    public String getUser(@PathVariable("id") Long id, Model model) {
        User user = userService.getUserById(id);
        model.addAttribute("user", user);
        return "user";
    }
    
    @PostMapping("/")
    public String createUser(@ModelAttribute("user") User user) {
        userService.createUser(user);
        return "redirect:/users/" + user.getId();
    }
}
위의 예시에서는 UserController라는 컨트롤러를 정의하고 있습니다. @Controller 어노테이션을 통해 컨트롤러로 지정되며, /users 경로에 대한 요청을 처리합니다. getUser() 메소드는 @GetMapping 어노테이션을 통해 HTTP GET 요청을 처리하고, createUser() 메소드는 @PostMapping 어노테이션을 통해 HTTP POST 요청을 처리합니다.
 
 
getUser() 메소드에서는 userService를 사용하여 사용자 정보를 조회한 후, 모델에 데이터를 추가하여 "user" 뷰로 전달합니다. createUser() 메소드에서는 전달받은 사용자 정보를 userService를 통해 저장한 후, 생성된 사용자의 상세 정보를 보여주는 URL로 리다이렉트합니다.
 
이 예시를 통해 스프링 MVC의 구조와 각 컴포넌트의 역할을 이해할 수 있습니다.
 
이상으로 스프링 MVC 구조에 대해 알아보았습니다. 스프링 MVC는 웹 애플리케이션 개발을 위한 강력하고 유연한 아키텍처를 제공하므로, 개발자들에게 많은 도움이 될 것입니다.
 

댓글