- 스프링을 처음 접하여 처음 배우는 내용이 많아 TIL이 밀려버렸다..ㅠ 더욱 열심히 하자!
1 ) Template Engine
- 동적인 웹 페이지를 생성하기 위해 사용되는 도구이며 템플릿을 기반으로 정적인 부분과 동적인 데이터를 결합하여 HTML, XML 등의 문서를 생성하는 역할을 수행한다.
- 우리가 흔히 말하는 UI(User Interface)를 만들며, SSR(Server Side Rendering)에 사용된다.
- 템플릿 엔진이 나온 이유 - 자바 코드로 HTML을 만들어 내는 것이 아닌 HTML 문서에 동적으로 변경해야 하는 부분만 자바 코드를 넣을 수 있다면 더 편리하다
- 대표적인 템플릿 엔진
- Thymeleaf - Spring과 통합 잘 되어있음 주로 이거 사용하는 것 같다.
- JSP - 예전엔 많이 사용했다고 한다.
- FreeMarker
- Velocity
- Mustache
- MVC
- Controller
- HTTP Request를 전달받아 파라미터를 검증한다.
- 비지니스 로직을 실행한다.
- View에 전달한 결과를 조회하여 Model 객체에 임시로 저장한다.
- Model
- View에 출력할 Data를 저장하는 객체이다.
- View는 비지니스 로직이나 Data 접근을 몰라도 되고 View Rendering에만 집중하면 된다.(책임분리)
- View
- Model 객체에 담겨져 있는 Data를 사용하여 화면을 Rendering 한다.
- Controller
- MVC의 문제점
- dispatcher.forward(request, response) View로 이동하는 forward가 항상 중복 호출된다.
- Spring path = "/WEB-INF/views/new-form.jsp" View의 path를 입력(중복 작업)한다.
- HttpServletResponse 객체를 사용하는 경우가 적다.(JSP에서 모두 해결하기 때문)
- 공통 기능이 추가될수록 Controller에서 처리해야하는 부분들이 많아진다.
- 프론트 컨트롤러 패턴
- 공통의 로직을 하나의 입구에서 처리하기 위해서 프론트 컨트롤러 패턴 적용
- 각각의 핸들러 호출 후 응답을 프론트 컨트롤러에 맞게 변형시켜야 하는 문제
- Spring MVC 사용
- 프론트 컨트롤러 패턴, 어뎁터 패턴이 모두 적용된 현재
- 우리가 사용하는 Spring을 이용한 Web Application 개발 방식에 사용됨.
- Spring은 MVC 패턴에 프론트 컨트롤러 패턴, 어뎁터 패턴이 적용되어있다.
2 ) Spring MVC
- 구조
- DispatcherServlet : Spring의 프론트 컨트롤러
- View : 인터페이스로 구성되어있다. 확장성을 가지고 있음.
- 실행 순서
- Client로 부터 HTTP 요청(Request)을 받는다.
- Handler 조회
- Handler Mapping을 통해 요청 URL에 Mapping 된 Handler(Controller)를 조회
- Handler를 처리할 Adapter 조회
- Handler를 처리할 수 있는 Adapter 조회
- Handler Adapter 실행(Handle)
- 알맞은 어뎁터가 존재한다면 Handler Adapter에게 요청을 위임한다.
- Handler 실행(호출)
- Handler Adapter가 실제 Handler(Controller)를 호출하여 실행 및 결과 반환
- Model And View(return)
- Handler Adapter는 Handler가 반환 하는 정보를 ModelAndView 객체로 변환하여 반환
- viewResolver 호출(알맞은 View 요청)
- View Resolver를 찾고 실행
- View 반환
- View Resolver는 View의 논리 이름을 물리 이름으로 전환하는 역할을 수행하고 Rendering역할을 담당하는 view 객체 반환
- View Rendering
- View를 통해서 View를 Rendering
- Component
- Spring Bean에 등록하는 역할을 수행한다.
- Spring Bean은 애플리케이션의 구성 요소를 정의하는 객체이다.
- 마치 Servlet이 Servlet Container에 등록되는 것과 같다.
- Spring Bean에 등록하는 역할을 수행한다.
- Spring MVC의 주요 Interface
- Spring MVC는 DispatcherServlet 코드의 변경 없이 기능변경 및 확장이 가능하다. 기능들이 대부분 Interface로 만들어져 있기 때문이다.
- 인터페이스를 Implements 하여 구현하면 내가 만든 클래스를 사용할 수 있다 ( 다형성 )
- Spring MVC는 DispatcherServlet 코드의 변경 없이 기능변경 및 확장이 가능하다. 기능들이 대부분 Interface로 만들어져 있기 때문이다.
'TIL > Spring' 카테고리의 다른 글
TIL 2024-11-06 (Spring 입문 - 요청 데이터) (0) | 2024.11.06 |
---|---|
TIL 2024-11-05 (Spring 입문 - Spring Annotation, Mapping) (0) | 2024.11.05 |
TIL 2024-11-01 (Spring 입문 - Web Application) (0) | 2024.11.01 |
TIL 2024-10-31 (Spring 입문 - HTTP) (0) | 2024.10.31 |
TIL 2024-10-30 (Spring 입문 - 2) (1) | 2024.10.30 |