Template Engine
- 동적인 웹페이지를 생성하는데 사용하는 도구
- 템플릿을 기반으로 정적/동적 데이터를 경합해 HTML, XML등 문서를 생성
>>자바 코드로 HTML을 만드는 것이 아닌 HTML문서에 동적으로 변경해야할 부분만 넣으면 편해서 만들어짐
<대표적 템플릿 엔진>
1. Thymeleaf
- Spring과 통합이 잘되있음 (다양한 기능 포함)
2. JSP(Java Server Pages)
- 요즘 안씀
3. FreeMarker
4. Velocity
5. Mustache
1) MVC 패턴
- 하나의 Servlet이나 JSP로 처리하던 것들을 Model, View, Controller 영역으로 나눈것이다
' Controller ( Servlet가 해당하는 영역)
- HTTP Request를 전달받아 파라미터 검증
- 비지니스 로직 실행( 일반적으론 Service layer을 별도로 만드어 비지니스 로직 실행)
- Database와 상호작용하는 Repsitort layer을 추가 구성
' Model
- View에 출력할 데이터를 저장하는 객체
' View
- Model 객체에 담겨져 있는 Data를 사용하여 화면을 Rendering 한다
결과
- MVC가 적용되어 controller와 view가 분리
- 화면 문제면 view에서 로직 문제면 controller에서 수정
2) 어뎁터 패턴
다양한 컨트롤러(Handler)를 유연하게 만들기위해 어댑터 패턴을 도입하게 되었다. 컨트롤러들은 동일한 인터페이스를 구현하도록 하고 해당 인터페이스와 공통 로직 사이에 어댑터를 두어 유연하게 만든다. 서로 다른 인터페이스를 갖는 두 클래스를 연결해주는 패턴이다.
- 컨트롤러(Handler)는 비지니스 로직을 처리하고 알맞은 결과를 반환한다.
- 어댑터는 공통 로직과 컨트롤러(Handler)가 자연스럽게 연결되도록 한다.
- 프론트 컨트롤러는 공통으로 처리되는 로직을 수행한다.
- 어댑터 패턴 장점
- 프론트 컨트롤러, 어댑터, 핸들러 모두 각자의 역할만 수행한다. (책임 분리)
- 새로운 컨트롤러(Handler)가 추가되어도 컨트롤러와 어댑터만 추가한다면 공통 로직의 변경이 발생하지 않는다.
- 요약
- Servlet 사용
- 비지니스 로직을 처리하는 코드와 화면을 그리는 View 코드가 함께 존재하는 문제
- JSP 사용
- View 에 해당하는 코드를 분리하였지만, 여전히 비지니스 로직을 JSP에 포함하는 문제
- MVC 패턴 사용
- 공통 로직을 처리하는것에 코드가 중복되는 문제
- 프론트 컨트롤러 패턴 사용
- 공통 로직을 하나의 입구에서 처리하기 위해서 프론트 컨트롤러 패턴 적용
- 각각의 핸들러 호출 후 응답을 프론트 컨트롤러에 맞게 변형시켜야 하는 문제
- Spring MVC 사용
- 프론트 컨트롤러 패턴, 어댑터 패턴이 모두 적용된 현재
- 우리가 사용하는 Spring을 이용한 Web Application 개발 방식에 사용됨
- Spring은 MVC 패턴에 프론트 컨트롤러 패턴, 어댑터 패턴이 적용되어 있다
- Servlet 사용
'내일배움캠프 > TIL' 카테고리의 다른 글
[Spring]_ Framework (0) | 2025.01.23 |
---|---|
[Spring]_ Web의 기초 (0) | 2025.01.22 |
[JAVA]_다양한 자료구조 (0) | 2025.01.20 |
[JAVA] 키오스크 트레블 슈팅 Lv6 (0) | 2025.01.20 |
[JAVA] 키오스크 트레블 슈팅 Lv3~Lv4 (0) | 2025.01.20 |