Spring MVC/Model/View/Controller

2022. 6. 8. 11:13
728x90

• MVC 패턴

서블릿이 하나거나, JSP 하나만 가지고 비즈니스 로직과 뷰 렌더링까지 모두 처리하게 된다면, 코드도 길어지고 유지보수가 어려워진다. 그리고 변경의 라이프사이클이 다른 기능들끼리 모여있는 경우 유지보수하기 힘듦. 마지막으로 JSP같은 뷰 템플릿은 뷰 렌더링 하는 것에 최적화가 되어 있기 때문에 그 역할에만 충실히 할 수 있도록 분리하는 게 좋다. 그래서 비즈니스 로직과 그 외의 것들을 분리시키고자 MVC 패턴이 등장함 ! Model, View, Controller 3가지로 역할과 기능을 분리를 시켜 각자의 일에 집중할 수 있도록 되었다.

 

• Model

뷰에 출력할 데이터를 담아두는 곳

*모델은 HttpServletRequest 객체를 사용한다. request는 내부에 데이터 저장소를 가지고 있는데, request.setAttribute(), request.getAttribute()를 사용해서 데이터를 보관하고, 조회할 수 있다.

 

• View

모델의 데이터를 사용해서 화면을 보여주는 곳

ex) HTML을 생성해서 보여주는 경우 등

 

• Controller

HTTP 요청을 받아서 파라미터를 검증한 후에 비즈니스 로직 실행한다. 그리고 뷰에 전달할 데이터를 모델에 담는다!

*Controller가 데이터를 직접 전달하지 않고 View가 모델에서 데이터를 가져오는 식

 

MVC 패턴의 한계(초반): 예전에는 컨트롤러에 중복되는 코드나 필요 없는 코드들이 많았고(Dispatcher의 forward 중복, ViewPath 중복 등), 공통처리가 어렵다는 점(Front-Controller로 문제점 해결 !)

지금은 개선이 되었으므로 어떤 식으로 개선이 되었는지 비교해보길 추천

 

 

 

BELATED ARTICLES

more