MVC패턴은 왜 자주 사용되고 왜 나오게 되었을까?
Java기반으로 한 웹 개발 발전 순서
1) Servlet 사용
2) Java+Servlet 사용
3) Spring + MVC
MVC란? → Model View Controller
디자인 패턴 중 하나인 MVC패턴은 model,view,controller의 줄임말로 어플리케이션을 구성할 때
그 구성요소를 세가지의 역할로 구분한 패턴의 의미한다.
장점 : 사용자 인터페이스로부터 비즈니스 로직을 분리하여 서로 영향없이 고칠 수 있는 설계가능.
Controller : 사용자의 요청을 받는 곳 → 어떻게 처리 할지를 정한다.(보통 model로 보냄)
Model : DB를 처리하는 영역
View : Model에서 처리 된 것을 사용자에게 직접적으로 보여지는 곳.
1-1) Controller
Model 과 View에서 다리 역할을 수행
사용자로부터 입력에 대한 응답으로 모델 및 뷰를 업데이트 하는 로직을 포함한다.
사용자의 요청은 모두 컨트롤러를 통해 진행되어야함
Controller로 들어온 request는 어떻게 처리할건지를 결정 후 Model로 요청을 전달한다.
ex) 네이버에서 음식을 검색하면은 그 키워드를 Controller가 받아 Model에 넘긴다.
1-2) Model
- 데이터를 처리하는 영역
- Dao , Vo
ex) 검색 키워드가 넘어오면 DB에서 관련된 상품의 데이터를 받아 View에 전달.
1-3) View
- 데이터를 보여주는 화면자체 영역 즉 UI를 뜻함
- View에서는 별도의 데이터를 보관하지 않음
ex) 검색결과를 보여주기 위한 Model에서 결과 상품 리스트 데이터를 받음.
MVC패턴의 특징?
- Application 역할을 세 구간으로 나눠 설계함으로써 의존성이 낮아짐
→ 좋은 프로젝트 : 응집도가 높고, 의존성이 낮은것.
즉 의존성이 낮으므로, 좋은 프로젝트로 활용이 가능하다
- 각 영역이 독립적으로 구성되어 개발자 간 분업 및 협업이 원활 해짐
- 한 영역을 업데이트 하더라도 다른 곳에 영향을 주지 않음.
MVC 패턴의 단점?
- 프로젝트가 커지면서 Controller가 하는 일이 많아진다
추가적으로 MVC패턴에서 기본적으로 알아야할 DispatcherServlet에 대해서 잠깐 적어보겠습니다.
DispatcherServlet
1) Client가 request를 하면은 가장먼저 dispatcherServlet이 받아온다.
@GetMapping("")
public String ex1() {
return"주소";
}
2) 디스패쳐서블릿을 요청을 Handler mapping을 통해서 처리할 Controller를 결정한다
- Handler mapping == 공장반장 이라고 생각하면 이해가 편함.,
- 어떤 컨트롤러한테 일을 주지? 라고 생각하면 편하다.
3) Controller
- business logic을 처리하는 곳 이다.
ex) db사용시 repository 계층 , 데이터베이스 계층으로부터 데이터를 받아온다
- Controller는 Model과 View에 중간에서 다리 역할을 한다
4) Model and logical view name → 5) ViewResolver
5) View
최종적으로 request를 response를 하여서 사용자에게 직접적으로 보여주는 곳 입니다.
저는 이 사진을 봤을 때 이해가 잘 되었습니다.
- Controller와 View 사이에 Model에 존재하며 컨트롤러는 Model에 데이터를 담고, 담은 데이터를
뷰 에서 사용하는 사진 입니다.
계속공부를 더하면서 추가내용 작성 하겠습니다.