본문 바로가기
교재 실습/자바 웹 프로그래밍 Next Step

6.4.1 요구사항

by Jint 2025. 5. 14.

요구사항은 MVC 패턴을 지원하는 프레임워크를 구현하는 것이다. MVC 패턴을 지원하는 기본적인 구조는 5장의 HTTP 웹 서버 리팩토링 단계에서 다양한 분기문을 제거할 때 적용한 방법을 그대로 사용하면 된다. 단, 이와 같은 구조로 변경하려면 모든 요청을 RequestHandler 가 받아서 요청 URL에 따라 분기 처리 했듯이 서블릿도 모든 요청을 하나의 서블릿이 받은 후 요청 URL에 따라 분기 처리하는 방식으로 구현하면 된다.

MVC 패턴은 기본적으로 사용자의 최초 진입 시점이 컨트롤러가 된다. 뷰에 직접 접근하는 것을 막고 항상 컨트롤러를 통해 접근하도록 해야 한다. 따라서 지금까지 회원가입(/user/form.jsp), 로그인(/user/login.jsp)과 같이 JSP로 직접 접근하지 않도록 해야 한다.

MVC 프레임워크를 구현했을 때의 결과를 클래스 다이어그램으로 그려보면 다음과 같다.

 

MVC 프레임워크 구현 완료 후 클래스 다이어그램

 

모든 클라이언트 요청은 먼저 DispatcherServlet 이 받은 후 요청 URL에 따라 해당 컨트롤러에 작업을 위임하도록 구현할 수 있다. @WebServlet 으로 URL을 매핑할 때 urlPatterns="/" 와 같이 설정하면 모든 요청 URL이 DispatcherServlet 으로 연결된다.

단, CSS, 자바스크립트, 이미지와 같은 정적인 자원은 굳이 컨트롤러가 필요 없다. 그런데 위와 같이 매핑할 경우 컨트롤러가 필요없는 CSS, 자바스크립트, 이미지에 대한 요청까지 DispatcherServlet 으로 매핑이 되어 버리는 상황이 발생한다. 이 같은 문제점을 해결하기 위해 CSS, 자바스크립트, 이미지를 처리하는 서블릿 필터를 추가해 해결할 수 있다. 서블릿 필터는 core.web.filter.ResourceFilter에 구현되어 있다. 따라서 CSS, 자바스크립트, 이미지 요청에 대한 처리는 고려하지 않아도 된다. 서블릿 필터의 역할에 대해 잘 모르겠다면, 서블릿 필터에 대해 추가 학습할 것을 추천한다.

위 클래스 다이어그램을 보면 5장에서 분기문을 제거할 때와 다른 부분이 없다. 가능하면 다음 단계의 힌트를 보지 말고 스스로의 힘으로 직접 구현해 볼 것을 추천한다. 스스로의 힘으로 직접 구현해볼 때 자신의 것이 된다. 이를 통해 자바에 대한 자신감과 MVC에 대한 이해도를 높인다.

이 실습은 https://github.com/slipp/jwp-basic 저장소의 step1-user-completed-no-database 브랜치에서 시작할 수 있다.



참고도서 : https://roadbook.co.kr/169

 

[신간안내] 자바 웹 프로그래밍 Next Step

● 저자: 박재성 ● 페이지: 480 ● 판형: 사륙배변형(172*225) ● 도수: 1도 ● 정가: 30,000원 ● 발행일: 2016년 9월 19일 ● ISBN: 978-89-97924-24-0 93000 [강컴] [교보] [반디] [알라딘] [예스24] [인터파크] [샘

roadbook.co.kr

댓글