늦은 프로그래밍 이야기

Spring MVC 본문

내일배움캠프/Spring

Spring MVC

한정규 2022. 12. 7. 21:46

MVC

 - Model View Controller
 - 소프트웨어 공학에서 사용되는 아키텍쳐 패턴
 - 주 목적은 Business Logic과 Presentation Logic을 분리하기 위함

 

 - 사용자 인터페이스로부터 비지니스 로직을 분리하여 애플리케이션의 시작적 요소나 그 이면에서 실행되는 비지니스 로직을 서로 영향  없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있음

  • Model : 애플리케이션의 정보 (데이터, Business Logic 포함)
  • View : 사용자에게 제공할 화면 (Presentation Logic)
  • Controller : Model과 View 사이의 상호 작용을 관리

 - 실질적으로 클라이언트는 컨트롤러와만 직접 소통 (Request, Response)

 - Model에 Service와 DAO가 구현

 - View는 주로 HTML 형태 또는 JSON 형태


Model

 - 데이터베이스와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다루는 일을 함
 - 여러개의 데이터 변경 작업(추가, 변경, 삭제)을 하나의 작업으로 묶는 Trasaction을 다루는 일을 함
 - DAO 클래스, Service 클래스에 해당

 

View

- Model이 처리한 데이터나 그 작업 결과를 가지고 사용자에게 출력할 화면을 만드는 일을 함
 - 생성된 화면은 웹 브라우저가 출력, View는 HTML과 CSS, Javascript를 사용하여 출력할 UI를 만듬
 - HTML과 JSP를 사용하여 작성

 

Controller

 - Client의 요청을 받았을 때 그 요청에 대해 실제 업무를 수행하는 Model을 호출하는 일을 함
 - Client가 보낸 데이터가 있다면, Model을 호출할 때 전달하기 쉽게 데이터를 적절히 가공
 - Model이 업무 수행을 완료하면, 그 결과를 가지고 화면을 생성하도록 View에게 전달
 - Servlet과 JSP를 사용하여 작성


Spring MVC

 - 스프링에서 제공하는 웹 모듈

 - Model View, Controller 세가지 구성요소를 사용

 - 사용자의 다양한 HTTP Request를 처리

 - 단순한 텍스트 형식의 응답부터 REST 형식의 응답, View를 표시하는 html을 return하는 응답까지 다양한 응답을 할 수 있다.

 

Spring Layered 구조

Presentation Layer

 - Spring MVC 객체를 말한다.

 - 프론트 컨트롤러(DispatcherServlet), 컨트롤러, 뷰, 모델이 포함

 

Service Layer (Business Layer)

 - 비지니스 로직을 수행하는 컴포넌트

 - 컨트롤러(Presentation Layer)에서 요청을 보내면 DAO(Data Access Layer)를 이용해 실제로 비지니스 로직을 수행

 - 보통 하나의 비지니스 로직은 하나의 트랜잭션으로 동작

 

Data Access Layer (Repository Layer)

 - DB에 값을 저장하거나 가져오기 위해 JDBC, Mybatis, JPA 등을 사용해 구현한 DAO


Spring MVC 구조

  1. Client의 요청을 DispatcherServlet이 받아 HandlerMapping에 요청을 처리할 Controller에 대한 검색을 요청
  2. HandlerMapping이 매핑된 핸들러 객체를 DispatcherServlet에게 리턴
    * 핸들러 객체 : 해당 핸들러의 Handler 메소드(요청 처리 메소드, controller 클래스에 구현) 정보를 포함
  3. DispatcherServlet이 HandlerAdapter에게 실제 요청을 처리할 Handler 메소드 호출을 위임
  4. HandlerAdapter는 전달받은 Controller 정보를 기반으로 해당 Controller의 Handler 메소드를 호출
  5. Handler 메소드가 비즈니스 로직 처리 후 리턴 받은 Model 데이터를 HandlerAdapter에게 전달
  6. HandlerAdapter가 전달받은 Model 데이터와 View 정보를 DispatcherServlet에게 전달
  7. DispatcherServlet이 전달받은 View 정보를 ViewResolver에게 전달해서 View 검색 요청
  8. ViewResolver가 View 정보에 해당하는 View를 찾아서 리턴
  9. DispatcherServlet이 전달받은 View 객체에게 Model 데이터를 넘겨주면서 응답 데이터 생성을 요청
  10. View가 응답 데이터를 생성하여 DispatcherServlet에게 전달
  11. DispatcherServlet이 View로부터 전달받은 응답 데이터를 최종적으로 Client에게 전달

출처 : https://gnidinger.tistory.com/464

 

[Spring]Spring MVC

이전 글에서 스프링의 모듈 구조에 대해 본 적이 있다. 출처: https://docs.spring.io/spring-framework/docs/4.0.x/spring-framework-reference/html/overview.html

gnidinger.tistory.com

 

'내일배움캠프 > Spring' 카테고리의 다른 글

Annotation  (1) 2022.12.21
UnsatisfiedDependencyException 에러 해결  (0) 2022.12.16
JPA  (0) 2022.12.06
Database, SQL  (0) 2022.12.06
Layered Architecture (계층형 구조)  (0) 2022.12.06
Comments