091

[JAVA/Spring Boot] Spring MVC 본문

Programming Language/Java

[JAVA/Spring Boot] Spring MVC

공구일 2026. 3. 16. 18:47
728x90

1. Spring MVC

 

- Spring MVC란 데이터 처리와 비즈니스 로직(Model), 사용자에게 보여지는 화면(View), 그리고 이 둘 사이의 흐름을 제어하는 라우터(Controller)의 역할을 철저하게 분리하여 유연하고 확장 가능한 웹 애플리케이션을 구축하게 해주는 스프링의 핵심 웹 프레임워크입니다.

- 위의 이미지는 Spring MVC의 흐름을 나타내고 있으면 모든 Request는 DispatcherServlet으로 들어오고 모든 Response는 DispatcherServlet을 통해 나간다는 사실을 알 수 있습니다.

(1) DispatcherServlet은 모든 HTTP 요청을 받아 적절한 컨트롤러로 라우팅하는 Front Controller 역할을 합니다. 요청 라우팅, 컨트롤러 실행, View 처리 등의 웹 요청의 중앙 통제를 전적으로 맡고있습니다.
(2) HandlerMapping은 해당 요청이 어떤 컨트롤러를 실행해야할지 매핑해주는 역할을 합니다. 어떤 컨트롤러인지만 알려줍니다.

(3) HandlerAdapter는 매핑하는 과정에서 알려준 컨트롤러에서 어떻게 실행해야하는지 실행 방법을 알려줍니다.

SSR방식------------------------------------------------------------------------------------------------------------

(4) Handler(Controller)는 논리 View 이름을 반환합니다.

(5) ViewResolver는 Controller가 반환한 View 이름을 실제 View 리소스와 매핑합니다.

(6) Template Engine이 HTML을 생성합니다.

(7) 생성된 HTML이 Browser로 전달됩니다.

CSR방식------------------------------------------------------------------------------------------------------------

(4) Handler(@RestController)는 View 이름이 아니라 데이터를 반환합니다.
(5) Spring은 데이터를 JSON 형태로 직렬화합니다.
(6) Browser의 JavaScript가 데이터를 받아 UI를 렌더링합니다.

 

- 렌더링의 차이에 따라 중간 과정에서 Handler가 View로 이동하거나, @RestController를 통해 데이터만 반환하는 방식이 있습니다.

-> SSR 방식(서버 렌더링)에서의 대표적인 템플릿 엔진에는 JSP, Thymeleaf이 있습니다.

• JSP는 자바 기반 웹 애플리케이션을 위한 서버 사이드 언어이자 템플릿 기술로, HTML,XML 등의 정적 콘텐츠와 자바 코드로 작성된 동적 콘텐츠가 결합해 웹 페이지를 생성합니다.

Thymeleaf는 HTML 기반의 서버 사이드 템플릿 엔진으로, 현대 Spring에서 사용되며 JSP보다 Spring Boot와 같이 사용되길 권장됩니다.

-> CSR 방식(브라우저 렌더링)에서는 서버가 HTML을 생성하지않고(이후에 SPA를 통해 한번에 브라우저가 렌더링함) JSON 데이터를 반환합니다. 대표적인 프레임워크로는 React, Vue.js가 있습니다.

React는 Meta Platforms이 개발, 유지하는 오픈소스 JavaScript 기반 UI 라이브러리입니다. 컴포넌트, 가상 DOM, 단방향 데이터 흐름, 훅 등의 특징이 있습니다.

Vue.js는 사용자 인터페이스와 단일 페이지 애플리케이션을 구축하기 위한 오픈소스 프런트엔디 자바스크립트 프레임워크입니다. MVVM을 특징으로 가지고 있으며 마찬가지로 가상 DOM을 활용하여 렌더링 효율을 극대화합니다.

728x90