회원 관리 웹 애플리케이션
서블릿
- 자바 코드로 HTML Form을 만들어서 응답해야 함
- 복잡하고 비효율적
템플릿 엔진
- HTML 코드에서 자바 코드를 사용하여 동적으로 사용
- JSP, Thymeleaf, velocity 등
JSP
- <%@ ~~ %> : import문
- <% ~~ %> : 자바코드 입력
- <%= ~~ %> : 자바코드 출력
=> 서블릿과 JSP의 한계 (유지보수 어려움, 코드 노출 위험성 등)
=> MVC 패턴의 등장
MVC 패턴
개요
- 유지보수 어려움: 서블릿이나 JSP의 너무 많은 역할
- 변경 라이프 사이클: 비즈니스 로직과 뷰의 변경 라이프 사이클이 다름
- 기능 특화: JSP와 같은 뷰 템플릿은 화면 렌더링에 특화됨, 비효율적
Model View Controller
- 컨트롤러: HTTP 요청을 받아 파라미터 검증, 비즈니스 로직 실행, 모델 객체에 결과 데이터 저장
- 비즈니스 로직이 커지는 경우 서비스 (Service) 계층으로 분리
- 모델: 뷰에 출력할 데이터 저장
- 뷰: 모델에 담겨 있는 데이터를 사용하여 화면 렌더링(HTML 생성)
적용
- /WEB-INF: 해당 경로 안에 있는 JSP는 컨트롤러를 통해서만 호출 가능
- redirect: 실제 응답 후 다시 redirect 경로 요청, url 경로도 변경
- forward: 내부 서버에서 일어나는 호출로 클라이언트는 인지하지 못함
한계
- 포워드, ViewPath 중복: View로 이동하는 코드가 항상 중복으로 호출됨
- 사용하지 않는 코드
- 공통 처리 어려움
-> 프론트 컨트롤러(Front Controller) 패턴 도입 (입구 역할)
[출처] 스프링 MVC 1 - 김영한, 인프런