Spring MVC란?
- Model-view-Controller의 약자이다.
- Model : 모델은 뷰가 렌더링하는데 필요한 데이터이다. 예를 들어 사용자가 요청한 상품 목록이나, 주문 내역이 이에 해당된다.
- View : 웹 어플리케이션에서 뷰(View)는 실제로 보이는 부분이며, 모델을 사용해 렌더링한다. 뷰는 JSP, JSF, PDF, XML등으로 결과를 표현한다.
- Controller : 컨트롤러는 사용자의 액션에 응답하는 컴포넌트다. 컨트롤러는 모델을 업데이트하고, 다른 액션들을 수행한다.
MVC 모델은 자바 Web Programming에서 두가지 형태로 변형된다.
MVC Model 1 아키텍처
- 브라우저가 서버에 요청하면 해당 요청을 JSP가 받고, JSP는 Java로 만들어진 클래스인 Java Bean을 이용해서 Database를 사용하고, 그 결과를 화면에 출력한다.
- JSP에 HTML 코드와 Java 코드가 섞여있어 유지보수가 어렵다.
MVC Model 2 아키텍처
- 요청 자체는 Servlet이 받고, Servlet이 Java Bean을 이용해서 Database에서 데이터를 가져와, 그 결과를 JSP를 통해서 화면에 출력한다.
- Servlet은 요청과 데이터를 처리하는 Controller의 역할을 수행하고, JSP는 모델의 결과를 보여주는 View의 역할을 수행한다.
- 이렇게 함으로써 로직과 view를 분리할 수 있다.
MVC Model2의 발전형태
- Servlet은 관련된 요청을 처리하기에 불편한 구조를 가지고 있기 때문에, 이런 단점을 해결하기 위해 클라이언트가 보내는 모든 요청을 Front Controller라는 Servlet Class가 받아서 Controller Class(또는 handler Class)에게 위임한다.(Front Controller는 딱 하나만 존재하며, 요청만 받고 실제 일은 처리하지 않음)
- 요청의 실제 처리는 Controller Class(또는 handler Class)에게 위임함으로써, 관련된 URL은 하나의 Class에서 처리하도록 한다.
- Controller가 자바 bean 등을 이용해서 결과를 만들어내고, 만들어진 결과를 Model에 담아서 Front Controller에게 보내면 Front Controller가 알맞은 View에게 Model을 전달해서 결과를 출력한다.
- Model2의 발전된 형태가 Spring framework의 모듈중 하나인 Web Module에 구현되어있다.
- 이러한 Web Module을 Spring MVC라고 한다.
참조 URL
- https://www.edwith.org/boostcourse-web/lecture/16762/
- Web MVC framework (https://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html)
- MVC Model2 | Opendocs (https://myblog.opendocs.co.kr/archives/tag/mvc-model2)
- Model 1 and Model2 (MVC) Architecure (https://www.javatpoint.com/model-1-and-model-2-mvc-architecture)
- Modules (https://docs.spring.io/spring/docs/3.0.0.M4/reference/html/ch01s02.html)
- IBM Knowledge Center (https://www.ibm.com/support/knowledgecenter/SSRTLW_9.1.1/eos?origURL=SSRTLW_9.1.1/com.ibm.etools.struts.doc/topics/cstrdoc001.html)
'Java > Spring' 카테고리의 다른 글
DispatcherServlet (0) | 2020.06.28 |
---|---|
Spring MVC 기본 동작 흐름 (0) | 2020.06.28 |
Spring 싱글톤(Singleton) Scope (0) | 2020.06.28 |
DB에 Insert 할 때, SimpleJdbcInsert을 사용하는 이유는? (0) | 2020.06.28 |
Spring Tip! (0) | 2020.06.28 |