Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준
- C++
- 리덕스장바구니
- 토이프로젝트
- memory
- 타입스크립트
- react-redux
- codeup
- 정렬
- 일상
- 스프링
- Redux
- 파이썬
- 프로그래머스
- react
- js to ts
- OS
- error
- 코드업
- Java
- 기초100제
- 공부
- Spring
- 알고리즘
- 분할메모리할당
- web
- 협업
- CPU 스케줄링
- 자료구조
- Operating System
Archives
- Today
- Total
감자튀김 공장🍟
[Spring] MVC 패턴 알아보기 본문
반응형
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 처리 과정
- 클라이언트가 서버에 요청하면 front controller인 Dispatcher Servlet 클래스가 요청을 받는다.
- Dispatcher Servlet이 요청을 가로채 Handler Mapping에게 요청에 알맞는 Controller를 알려달라고 한다.
- 이때 Dispatcher Servlet은 프로젝트 파일 내의 servlet-context.xml 파일의 @Controller 인자를 통해 매핑된 컨트롤러가 존재하면 @RequestMapping을 통해 요청을 처리할 메소드로 이동한다. (Handler Mapping > Dispatcher Servlet > Controller)
- Controller는 해당 요청을 처리할 Service를 받아 비즈니스 로직을 Service에 위임한다.
- Service는 비즈니스 로직을 처리한 후 결과를 Controller에게 전달한다.
- Controller는 전달받은 데이터를 어떤 view를 통해 보여줄 것인지의 정보를 담아 Dispatcher Servlet에게 응답한다.
- Dispatcher Servlet은 Controller에게 받은 view에 대한 정보를 View Resolver에게 넘긴다.
- View Resolver은 jsp 또는 html을 찾아서 Dispatcher Servlet에게 전달한다.
- Dispatcher Servlet은 전달받은 jsp 또는 html을 View에게 Render을 지시하고 결과적으로 클라이언트에게 View가 제공된다.
Spring MVC Controller의 특징
- 파라미터 수집
- 사용자의 요청에 필요한 데이터를 추출하고 VO(DB 레코드와 상응되는 클래스)나 DTO(controller, view, 비즈니스 등의 계층 간 데이터 교환을 위한 자바 beans)로 변환하는 파라미터의 수집 작업을 한다.
- Annotation을 통한 간편 설정
- spring mvc 설정은 mvc나 annotation을 사용 가능하고, 주로 annotation을 이용하여 클래스나 메소드의 선언에 필요한 annotation을 추가하는 작업을 통해 요청이나 응답에 필요한 모든 처리를 완료할 수 있다.
- 테스트의 편리
- 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://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