감자튀김 공장🍟

[Spring] MVC 패턴 알아보기 본문

JAVA/Spring

[Spring] MVC 패턴 알아보기

Potato potage 2022. 4. 19. 10:53
반응형

MVC란?

MVC란 Model, View, Controller를 분리한 디자인 패턴이다.

 

1. Model

  • Model은 데이터 관리 및 비즈니스 로직을 처리하는 부분이다.
  • 일반적으로 POJO로 구성되며 application data를 저장한다.
  • 단순히 요청에 의한 로직만 처리하고 이 결과를 어디에 사용하는지, 어떻게 사용하는지는 전혀 상관하지 않는다.
  • DAO, DTO, Service 등등 (@Service를 통해 스프링 컨테이너에 등록된 객체는 Model에 해당된다)

 

2. View

  • 비즈니스 로직 처리 결과를 통해 사용자 인터페이스가 표현되는 구간이다.
  • Model 데이터 렌더링을 담당하고 있으며 일반적으로 HTML로 화면을 출력한다.
  • 물리적인 view 파일들을 가지고 있다.

 

3. Controller

  • Model과 View를 연결해주는 역할이다.
  • 사용자 요청을 처리하고 적절한 결과를 Model object에 담아 View에 전달한다.
  • 즉, Model Object와 Model을 화면에 출력할 View Name을 반환한다.
  • Controller --> Serivce --> Dao --> DB

 

Spring MVC 처리 과정

  1. 클라이언트가 서버에 요청하면 front controller인 Dispatcher Servlet 클래스가 요청을 받는다.
  2. Dispatcher Servlet이 요청을 가로채 Handler Mapping에게 요청에 알맞는 Controller를 알려달라고 한다.
  3. 이때 Dispatcher Servlet은 프로젝트 파일 내의 servlet-context.xml 파일의 @Controller 인자를 통해 매핑된 컨트롤러가 존재하면 @RequestMapping을 통해 요청을 처리할 메소드로 이동한다. (Handler Mapping > Dispatcher Servlet > Controller)
  4. Controller는 해당 요청을 처리할 Service를 받아 비즈니스 로직을 Service에 위임한다.
  5. Service는 비즈니스 로직을 처리한 후 결과를 Controller에게 전달한다.
  6. Controller는 전달받은 데이터를 어떤 view를 통해 보여줄 것인지의 정보를 담아 Dispatcher Servlet에게 응답한다.
  7. Dispatcher Servlet은 Controller에게 받은 view에 대한 정보를 View Resolver에게 넘긴다.
  8. View Resolver은 jsp 또는 html을 찾아서 Dispatcher Servlet에게 전달한다.
  9. Dispatcher Servlet은 전달받은 jsp 또는 html을 View에게 Render을 지시하고 결과적으로 클라이언트에게 View가 제공된다.

 

Spring MVC Controller의 특징

  1. 파라미터 수집
    • 사용자의 요청에 필요한 데이터를 추출하고 VO(DB 레코드와 상응되는 클래스)나 DTO(controller, view, 비즈니스 등의 계층 간 데이터 교환을 위한 자바 beans)로 변환하는 파라미터의 수집 작업을 한다.
  2. Annotation을 통한 간편 설정
    • spring mvc 설정은 mvc나 annotation을 사용 가능하고, 주로 annotation을 이용하여 클래스나 메소드의 선언에 필요한 annotation을 추가하는 작업을 통해 요청이나 응답에 필요한 모든 처리를 완료할 수 있다.
  3. 테스트의 편리
    • WAS의 실행 없이도 테스트할 수 있는 편리한 방법을 제공한다.

 

Annotation 정리

@annotation 이름 - 사용할 수 있는 곳

@Controller - class

  • 컨트롤러 객체임을 명시

@RequestMapping - class, method

  • 특정 URL에 매칭되는 클래스나 메소드임을 명시

@RequestParam - parameter

  • 요청에서 특정한 파라미터 값을 찾아낼 때 사용

@RequestHeader - parameter

  • 요청에서 특정 HTTP 헤더 정보를 추출할 때 사용

@PathVariable - parameter

  • 현재 URL에서 원하는 정보를 추출할 때 사용

@ModelAttribute - method, parameter

  • 자동으로 해당 객체를 뷰까지 전달하도록 만든 것

@ResponseBody - method, return type

  • 리턴 타입이 HTTP의 응답 메시지로 전송

@RequestBody - parameter

  • 요청 문자열이 그대로 파라미터로 전달

@Repository - class

  • DAO 객체

@Service - class

  • 서비스 객체

 

 

출처

https://min-it.tistory.com/7

https://gmlwjd9405.github.io/2018/12/20/spring-mvc-framework.html

https://velog.io/@solchan/Spring-Spring-MVC%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

반응형

'JAVA > Spring' 카테고리의 다른 글

[Spring] java.lang.UnsupportedClassVersionError  (0) 2022.07.01
[Spring] Aspect Oriented Programming (AOP)이란?  (0) 2022.04.18
[Spring] Dependency Injection(DI)란?  (0) 2022.04.17
[Spring] Spring 개요  (0) 2022.04.15
Comments