
안녕하세요 오늘은 스프링 MVC 패턴에 대해 알아보겠습니다 👨💻
웹 계층에 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈이 있는데 이를 스프링 웹 MVC(spring-web-mvc) 또는 스프링 MVC라고 합니다.
그렇다면 MVC 패턴 이란 무엇일까요?

MVC 패턴은 애플리케이션을 개발할 때 사용하는 디자인 패턴입니다.
애플리케이션의 개발 영역을 MVC(Model, View, Controller)로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식입니다.
MVC 패턴을 도입하면서 UI 영역과 도메인(비즈니스 로직) 영역으로 구분되어 서로에게 영향을 주지 않으면서 개발과 유지보수를 가능하게 되었습니다
@Controller // Controller 클래스 -> 빈 객체로 등록
public class HelloController {
@RequestMapping("/hello.do") // 매핑할 URL
public String hello(Model model) {
model.addAttribute("greeting", "안녕하세요"); // Model에 데이터를 설정
return "hello"; // 리턴할 View 이름
}
}
Model
Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 전달받으면 요청 사항을 처리하기 위한 작업을 합니다.
처리한 작업의 결과 데이터를 클라이언트에게 응답을 돌려주어야 하는데, 이때 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터를 Model이라 합니다 👨💻
View
View는 Model을 이용하여 웹 브라우저와 같은 애플리케이션의 화면에 보이는** 리소스(Resource)를 제공하는 역할을 합니다 👨💻
Spring MVC에는 다양한 View 기술이 포함되어 있습니다.
Controller
Controller는 클라이언트 측의 요청을 직접적으로 전달받는 엔드포인트(Endpoint)로써 Model과 View의 중간에서 상호작용을 해주는 역할을 합니다.
클라이언트 측의 요청을 전달받아 비즈니스 로직을 거친 후, Model 데이터가 만들어지면, 이 Model 데이터를 View로 전달하는 역할을 합니다.
이제부터 Spring MVC 패턴 구조에 대해 구체적으로 학습해보겠습니다 💪

해당 이미지는 Spring MVC 패턴 구조에 대한 이미지입니다.
사실 일반적인 MVC 패턴에는 다양한 종류가 있지만, 보통 해당 이미지를 기반으로 한 MVC 패턴을 Spring MVC 패턴이라고 합니다 👀
DispatcherServlet 은 클라이언트의 요청을 전달받습니다. Controller 에게 클라이언트의 요청을 전달하고, 컨트롤러가 리턴한 결과값을 View 에 전달하여 알맞은 응답을 생성하도록 합니다 🧑🏼💻
DispatcherServlet 은 Controller 의 Controller 이기 때문에 Front Controller 라고 불리기도 합니다.
DispatcherServlet은 HttpServlet을 상속받아 사용하고, 서블릿으로 동작합니다.
DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet
DispacherServlet을 사용하면 서블릿으로 등록하면서 모든 경로에 (urlPatterns=”/”)에 대해 매핑합니다.
HandlerMapping 은 클라이언트의 요청 URL 을 어떤 컨트롤러가 처리할지 결정하는 기능을 합니다.
Controller 는 클라이언트의 요청을 처리한 뒤, 결과를 리턴합니다.
응답 결과에서 보여줄 데이터를 Model 에 담아 전달합니다.
Controller 에서 나오는 Model 은 HandlerAdpater 에 의해 ModelAndView 로 변환됩니다.
ModelAndView 란 Controller 에서 처리한 결과 정보 및 View 선택에 필요한 정보를 담습니다.
ModelAndView 를 전달받은 DispatcherServlet 은 실제 클리언트에게 보여질 View 를 렌더링하기 위해 어떤 View 객체를 사용할지 결정하기 위해 ViewResolver 를 호출합니다.
ViewResolver 에 의해 View 객체가 결정되고 해당 객체를 통해 View 를 렌더링합니다.
지금까지 전반적인 Spring MVC 에 대해 알아보았습니다.
이번에는 Spring MVC 장점과 단점에 대해 알아보겠습니다.
Model , View , Controller 로 나누어서 개발을 할 수 있기에 여러 개발자가 역할을 분담해서 개발을 진행할 수 있습니다.이처럼 Spring MVC 패턴에는 장점과 단점이 존재하지만 현재 MVC 패턴이 적용되어 있는 전자정부 프레임워크 가 많이 있기 때문에 매우 중요한 패턴으로 사용되고 있습니다.
또한, 위에서 서술한 단점은 개발자가 신경써서 개발한다면 충분히 해결가능하므로 많은 개발자가 채택하고 있는 Spring MVC 패턴을 적용해보도록 합시다 💪
MVC패턴이란, Spring MVC란, Spring MVC 장점, Spring MVC
[Spring] Spring의 MVC 패턴과 MVC1과 MVC2 비교