10. Spring MVC 구조

Spring MVC는 Java 기반의 웹 애플리케이션 개발을 위한 프레임워크로, Spring 프레임워크의 일부분입니다. MVC 패턴을 기반으로 한 웹 애플리케이션을 구축하는 데 필요한 여러 구성 요소와 기능을 제공합니다. Spring MVC는 모델-뷰-컨트롤러(MVC) 아키텍처를 따르며, 이를 통해 애플리케이션의 각 부분을 분리하여 개발, 유지보수 및 확장을 용이하게 합니다.

🔎pageMVC(Model View Control)패턴이란

1. Controller (컨트롤러)

컨트롤러는 클라이언트의 요청을 처리하고 응답을 생성하는 부분입니다. Spring MVC에서 컨트롤러는 @Controller 어노테이션으로 표시되며, 특정 URL에 대한 요청을 처리하는 메서드들로 이루어져 있습니다. 이 메서드들은 비즈니스 로직을 수행하고, 모델을 업데이트하며, 뷰에 데이터를 전달합니다.

@Controller
public class MyController {
    @RequestMapping("/home")
    public String home(Model model) {
        model.addAttribute("message", "Hello, Spring MVC!");
        return "home"; // 뷰 이름 반환
    }
}

1) DispatcherServlet

Spring MVC 애플리케이션의 모든 요청과 응답을 중앙에서 관리하는 핵심 컨트롤러입니다. 클라이언트의 요청을 받아 적절한 핸들러(컨트롤러)로 라우팅하고, 그 결과를 뷰에 전달하여 클라이언트에 응답합니다.

🔎pageDispatcherServlet

2) Handler Mapping

핸들러 매핑은 클라이언트의 요청 URL을 어떤 컨트롤러가 처리할지 결정합니다. 즉, 어떤 요청이 어떤 컨트롤러에게 라우팅될지를 정의합니다.

🔎pageHandler Mapping

2. Model (모델)

모델은 애플리케이션의 데이터와 비즈니스 로직을 나타냅니다. 모델은 POJO(Plain Old Java Object)로 표현되며, 컨트롤러에 의해 업데이트되고 뷰에 데이터를 전달하는 역할을 합니다.

public class User {
    private String username;
    private String email;
    // Getter 및 Setter 메서드
}

3. View (뷰)

뷰는 사용자에게 정보를 표시하는 부분입니다. Spring MVC에서 뷰는 주로 JSP, Thymeleaf, Freemarker 등의 템플릿 엔진을 사용하여 생성됩니다. 뷰는 모델로부터 전달받은 데이터를 사용자에게 보여주는 역할을 합니다.

<!-- home.jsp (뷰) -->
<html>
<head>
    <title>Spring MVC Example</title>
</head>
<body>
    <h1>${message}</h1>
</body>
</html>

Spring MVC의 동작 과정

  1. 사용자 요청 수신: DispatcherServlet은 클라이언트의 모든 요청을 받아들입니다.

  2. 핸들러 매핑: DispatcherServlet은 요청 URL을 어떤 컨트롤러가 처리할지 결정하기 위해 핸들러 매핑에 의해 적절한 컨트롤러를 찾습니다.

  3. 컨트롤러 실행: 찾은 컨트롤러의 메서드가 실행되고, 필요한 비즈니스 로직을 수행하며 모델을 업데이트합니다.

  4. 뷰 결정: 컨트롤러는 데이터를 포함한 모델 객체를 생성하고, 이를 특정 뷰로 전달합니다.

  5. 뷰 렌더링: 뷰는 모델에서 전달받은 데이터를 사용하여 최종적인 HTML을 생성합니다.

  6. 응답 전송: DispatcherServlet은 생성된 HTML을 클라이언트에게 응답으로 전송합니다.

이러한 구조는 각 부분의 역할을 분리시켜 유지보수가 쉽고 확장 가능한 애플리케이션을 개발할 수 있도록 돕습니다.

Last updated