Spring MVC
- 스프링의 모듈 중에서 웹 계층을 담당하는 몇가지 모듈 중 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈이 spring-webmvc인데, 이를 줄여 Spring MVC, Spring MVC 프레임워크라고함
서블릿(Servlet)이란?
- 클라이언트의 요청을 처리하도록 특정 규약에 맞추어서 Java 코드로 작성하는 클래스 파일
- 이러한 서블릿들이 웹 애플리케이션으로 실행되도록 해주는 서블릿 컨테이너가 존재(ex) 아파치 톰캣(Apache Tomcat)
Model
- Spring MVC의 M에 해당
- 웹 애플리케이션은 클라이언트의 요청을 전달 받으면 요청 사항을 처리하기 위한 작업을 진행
- 이러한 작업 결과 데이터를 클라이언트에게 응답으로 돌려주는데, 이때 응답으로 돌려주는 작업의 처리 결과데이터를 Model이라고 함
서비스 계층(Service Layer) : 클라이언트의 요청 사항을 구체적으로 처리하는 영역
비즈니스 로직(Businerr Logic) : 요청 사항을 처리하기 위해 Java 코드로 구현한 것
View
- Spring MVC의 V에 해당
- Model 데이터를 이용해서 웹브라우저같은 클라이언트 애플리케이션의 화면에 보여지는 리소스를 제공하는 역할
View의 형태
- html 페이지의 출력
- 클라이언트 애플리케이션에 보여지는 HTML 페이지를 직접 랜더링해서 클라이언트 측에 전송하는 방식
- 기본 HTML에 Model 데이터를 채워 넣어 HTML 페이지를 만들어 클라이언트 측에 전송
PDF, Excel 등의 문서 형태로 출력
- Model 데이터를 가공해서 PDF 문서나 Excel 문서를 만들어서 클라이언트 측에 전송하는 방식
- 문서 내에 데이터가 동적으로 변경되어야 하는 경우 사용할 수 있는 방식
XML, JSON 등 특정 형식의 포맷으로 변환
- Model 데이터를 특정 포로토콜 형태로 변환해서 변환된 데이터를 클라이언트 측에 전송하는 방식
- 특정 형식의 데이터만 전송, 프런트엔드 측에서 이 데이터를 기반으로 HTML페이지 생성
- 프런트엔드,백엔드의 명확한 구분을 통해 개발 및 유지보수 용이, 프런트엔드에서 비동기 클라이언트 애플리케이션을 만들 수 있다는 장점 존재
❓JSON이란?
- JavaScript Object Notation 의 약자로, 클라이언트와 서버가 주고받는 데이터 형식
- {"속성":"값:}의 형태
- 과거 XML을 많이 사용했지만, 현재는 상대적으로 가볍고 간단한 JSON을 주로 사용
Controller
- Spring MVC의 C에 해당
- 클라이언트 측의 요청을 직접적으로 전달 받는 엔드포인트로써 Model과 View의 중간에서 상호 작용을 해주는 역할
- 클라이언트 측의 요청을 전달받아 비즈니스 로직을 거친 후에 Model 데이터가 만들어지면 이를 View에 전달함
MVC 간의 처리 흐름 정리
1. 클라이언트가 요청 데이터 전송
2. 컨트롤러가 요청 데이터 수신 -> 비즈니스 로직 처리 -> Model 데이터 생성
3. Controller 에게 Model 데이터 전달 -> Controller 가 View 에게 Model 데이터 전달
4. View 가 응답 데이터 생성