dev/🧩 디자인패턴
MVC1 과 MVC2 차이 그리고 Spring MVC 란?
wugawuga
2022. 5. 27. 22:36
MVC1
먼저 JSP가 Controller 와 View 기능을 모두 담당한다. 즉 JSP 하나로 유저의 요청을 받고 응답을 처리하므로 구현 난이도가 쉽다.
자세히 말하면 JSP 하나에 비지니스 로직을 처리 하기 위한 코드와 웹 브라우저에 결과를 보여주기 위한 출력 관리 코드가 뒤섞여 있는 구조이다. 이 패턴은 프로젝트가 복잡하고 커질 수록 이 패턴은 장점을 잃는다. JSP 하나에 MVC 가 모두 이루어지다보니 재사용성도 매우 떨어지고, 읽기도 힘들어집니다. 유지보수에 있어서 문제가 발생한다.
MVC2
이 패턴이 표준으로 사용되는 패턴이다. 코드가 복잡하다는 MVC1 의 단점을 보완하기 위해 탄생했으며, 비교적 큰 프로젝트에 어울리고
설계 단계에서 비용이 많이 들어 개발 속도가 느리다는 단점이 있지만, 확장에 용이하고 유지보수가 수월하다는 것은 매우 큰 메리트가 될 수 있다.
Spring MVC2
DispatcherServlet
- Spring 에서 제공하는 Servlet 클래스
- 사용자의 요청을 받음
- Dispatcher 가 받은 요청은 HandlerMapping 으로 넘어감
HandlerMapping
- 사용자의 요청을 처리할 Controller 를 찾음 (Controller URL Mapping)
- 요청 url에 해당하는 Controller 정보를 저장하는 table을 가짐
- 즉, 클래스에 @RequestMapping(“/url”) annotaion을 명시하면 해당 URL에 대한 요청이 들어왔을 때 table에 저장된 정보에 따라 해당 클래스 또는 메서드에 Mapping
ViewResolver
- Controller가 반환한 View Name(the logical names)에 prefix, suffix를 적용하여 View Object(the physical view files)를 반환
- 예를 들어 view name: home, prefix: /WEB-INF/views/, suffix: .jsp는 “/WEB-INF/views/home.jsp”라는 위치의 View(JSP)에 Controller에게 받은 Model을 전달
- 이 후에 해당 View에서 이 Model data를 이용하여 적절한 페이지를 만들어 사용자에게 보여줌
https://gmlwjd9405.github.io/2018/12/20/spring-mvc-framework.html