Spring MVC/Model/View/Controller
• 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로 문제점 해결 !)
지금은 개선이 되었으므로 어떤 식으로 개선이 되었는지 비교해보길 추천
'Java & Spring > Spring MVC' 카테고리의 다른 글
| Spring MVC/request.setAttribute()/response.setAttribute() (0) | 2022.06.11 |
|---|---|
| Spring MVC/Dispatcher/Forward/Redirect (0) | 2022.06.09 |
| Spring MVC/Controller/V1/V2/V3/V4/V5 (0) | 2022.06.08 |
| Spring MVC/Front Controller (0) | 2022.06.08 |
| Spring MVC/Servlet/Server/HTTP/GET/POST (0) | 2022.06.08 |
