1. Spring MVC
1) 개요
- 소프트웨어 설계에서 세 가지 구성 요소인 모델(Model), 뷰(View), 컨트롤러(Controller)를 이용한 설계 방식을 말한다
- 웹 계층을 담당하는 몇가지 모듈 중에서 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈을 spring-webmvc라고 한다
- Spring Web MVC를 줄여서 'Spring MVC' 라고 한다
- Spring MVC가 웹 프레임워크의 한 종류이기 때문에 'Spring MVC 프레임워크'라고도 한다
- 클라이언트의 요청을 편리하게 처리해주는 프레임워크이다.
※ 서블릿(Servlet)
- 클라이언트의 요청을 처리하도록 특정 규약에 맞추어서 Java 코드로 작성하는 클래스 파일이다
- 아파치 톰캣(Apache Tomcat)은 서블릿들이 웹 애플리케이션으로 실행이 되도록 해주는 서블릿 컨테이너(Servlet Container) 중 하나이다
- Spring MVC 내부에서는 서블릿을 기반으로 웹 애플리케이션이 동작한다
2) 모델(MODEL)
- Spring MVC 기반의 웹 애플리케이션은 클라이언트의 요청을 전달 받으면 요청 사항을 처리하기 위한 작업을 한다
- 작업 완료 후 클라이언트에게 응답으로 돌려주는 처리한 작업의 결과 데이터를 Model이라고 한다
- 클라이언트의 요청 사항을 구체적으로 처리하는 영역을 서비스 계층(Service Layer)이라고 한다
- 요청 사항을 처리하기 위해 Java 코드로 구현한 것을 비즈니스 로직(Business Logic)이라고 한다
3) 뷰(View)
- Model 데이터를 이용해서 웹브라우저 같은 클라이언트 애플리케이션의 화면에 보여지는 리소스(Resource)를 제공하는 역할을 한다
- View의 형태별 종류
▶ HTML 페이지의 출력
- 클라이언트 애플리케이션에 보여지는 HTML 페이지를 직접 렌더링해서 클라이언트 측에 전송하는 방식이다
- 기본적인 HTML 태그로 구성된 페이지에 Model 데이터를 채워서 최종 HTML 페이지를 만든 후 클라이언트 측에 전송한다
- Spring MVC에서 지원하는 HTML 페이지 출력 기술에는 Thymeleaf, FreeMarker, JSP + JSTL, Tiles 등이 있다
▶ PDF, Excel 등의 문서 형태로 출력
- Model 데이터를 가공해서 PDF 문서나 Excel 문서를 만들어서 클라이언트 측에 전송하는 방식이다
- 문서 내에서 데이터가 동적으로 변경되어야 하는 경우 사용할 수 있다
▶ XML, JSON 등 특정 형식의 포맷으로의 변환
- Model 데이터를 특정 프로토콜 형태로 변환해서 클라이언트 측에 전송하는 방식이다
- 특정 형식의 데이터만 전송하고, 프런트엔드 측에서 이 데이터를 기반으로 HTML 페이지를 만드는 방식이다
- 프런트엔드 영역과 백엔드 영역이 명확하게 구분되므로 개발 및 유지보수가 상대적으로 용이하다
- 프런트엔드 측에서 비동기 클라이언트 애플리케이션을 만드는 것이 가능해진다
※ JSON(JavaScript Object Notation)
- JSON은 Spring MVC에서 클라이언트 애플리케이션과 서버 애플리케이션이 주고 받는 데이터 형식이다
- 과거에는 XML 형식의 데이터가 많이 사용되었다
- 현재는 XML보다 상대적으로 가볍고, 간결한 JSON 형식을 사용하고 있는 추세이다
- JSON은 {"속성", "값"} 의 형태로 작성된다
4) 컨트롤러(Controller)
- 클라이언트 측의 요청을 직접적으로 전달 받는 엔드포인트(Endpoint)이다
- Model 과 View 중간에서 상호 작용을 해주는 역할을 한다
- 클라이언트 측의 요청을 전달 받아서 비즈니스 로직을 거친 후에 Model 데이터가 만들어지면 View로 전달하는 역할을 한다
2. Spring MVC의 동작 방식
Client가 요청 데이터 전송 → Controller가 요청 데이터 수신 → 비즈니스 로직 처리 → Model 데이터 생성
→ Controller에게 Model 데이터 전달 → Controller가 View에게 Model 데이터 전달 → View가 응답 데이터 생성
- DispatcherServlet이 역활이 많아 보이지만 요청에 대한 처리는 다른 구성 요소들에게 위임(Delegate)하고 있다
- DispatcherServlet이 애플리케이션의 가장 앞단에 배치되어 다른 구성요소들과 상호작용하면서 클라이언트의 요청을 처리하는 패턴을 Front Controller Pattern이라고 한다
※ 참조 링크
▶ JSON : https://ko.wikipedia.org/wiki/JSON
JSON - 위키백과, 우리 모두의 백과사전
ko.wikipedia.org
▶ JOSN을 JAVA로 변환 : https://json2csharp.com/code-converters/json-to-pojo
JSON to POJO Object Online Converter - Json2CSharp Toolkit
json2csharp.com
Spring MVC의 동작 방식 추가 설명
Handler 용어의 의미 핸들(Handle) 이라고 하면 일반적으로 자동차의 핸들을 제일 먼저 떠올릴 수 있는데, 자동차의 핸들은 운전자가 직접 핸들을 움직이면서 직접적으로 자동차의 주행을 처리하는
itvillage.tistory.com
'Spring MVC' 카테고리의 다른 글
Spring MVC(3) - API 계층 -Controller (ResponseEntity 적용) (0) | 2022.09.21 |
---|---|
Spring MVC(2) - API 계층 - Controller (MVC 개요/핸들러 메서드) (0) | 2022.09.21 |
Spring MVC - Testing - Mockito (0) | 2022.07.14 |
Spring MVC - 데이터 액서스 계층(Data Access Layer) - DDD (0) | 2022.07.03 |
Spring MVC - 데이터 액서스 계층(Data Access Layer) - Spring Data JDBC(샘플 구현) (0) | 2022.07.03 |