스프링 MVC 1편 - 3. 서블릿, JSP, MVC 패턴
Updated:
김영한님의 인프런 강의 - 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
위 강의를 정리한 내용입니다.
I. 서블릿으로 웹 애플리케이션 구현
- 서블릿으로 구현해본 결과, HTML작성이 너무 번거로움
- 자바 코드로 HTML을 만들어 내는 것 보다 HTML문서에 자바코드를 넣을 수 있다면….
- 템플릿 엔진을 사용하여 HTML문서에서 필요한 곳만 코드를 적용하여 동적으로 변경할 수 있다.
- JSP, Thymeleaf, Freemarker, Velocity 등
- JSP를 사용해보자!(하지만 지금은 거의 사용되지 않음. 조금만 다루고 앞으로는 Thymeleaf)
II. JSP로 웹 애플리케이션 구현
- 자바 코드를 그대로 다 사용할 수 있다.
- 서블릿 코드와 같으나 HTML을 중심으로 하고, 자바 코드를 부분부분 입력한다.
<% %>
: 자바코드 입력<%= %>
: 자바코드 출력- 막상 JSP를 사용해도 직관적이지 못함
- 비지니스 로직과 View가 한 페이지에 섞여있음
III. MVC 패턴
개요
- 서블릿이나 JSP를 사용하면 비지니스 로직과 뷰 렌더링을 모두 한번에 처리해야 해서 역할이 많고 유지보수가 어렵다.
- 둘 사이의 변경의 라이프 사이클이 다르다.
- MVC패턴은 서블릿이나 JSP로 처리하던 것들을 컨트롤러, 뷰라는 영역으로 나눈다.
컨트롤러
: HTTP요청을 받아서 파라미터를 검증하고, 비지니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다.
모델
: 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비지니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더링하는 일에 집중할 수 있다.
뷰
: 모델이 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다. HTML 생성하는 부분
적용
- 서블릿을 컨트롤러로, JSP를 뷰로 사용하자.
dispatcher.forward()
: 서버내부에서 다시 호출이 발생한다.redirect
는 클라이언트로 응답을 보내고 다시 요청이 들어오지만,forward
는 내부에서만 호출이 돈다.
WEB-INF
디렉토리 내부의 JSP파일들은 직접 접근할 수 없고 컨트롤러를 항상 거쳐야한다.
한계
- 중복으로 사용하는 코드가 너무 많다.
- 공통처리가 어렵다.
- 프론트 컨트롤러 패턴을 도입하자.
Leave a comment