[Spring] MVC 패턴

728x90
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패턴의 특징?

  1. Application 역할을 세 구간으로 나눠 설계함으로써 의존성이 낮아짐

→ 좋은 프로젝트 : 응집도가 높고, 의존성이 낮은것.

즉 의존성이 낮으므로, 좋은 프로젝트로 활용이 가능하다

  1. 각 영역이 독립적으로 구성되어 개발자 간 분업 및 협업이 원활 해짐
  2. 한 영역을 업데이트 하더라도 다른 곳에 영향을 주지 않음.

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에 데이터를 담고,  담은 데이터를

뷰 에서 사용하는 사진 입니다.

 

 

계속공부를 더하면서  추가내용 작성 하겠습니다.

728x90