들어가기 전에
참고한 자료를 바탕으로 비전문가가 정리한 글이므로 오류가 있을 수 있습니다.
오류에 대한 지적 사항은 언제든지 환영합니다. 부디 댓글로 알려주시길 바랍니다. 감사합니다.
Servlet이란?
다음은 위키백과에서의 Servlet에 대한 설명이다. “서블릿이란 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램이다. ”
이렇게 글만 봐서는 Servlet에 대한 개념이 머리 속에서 잘 정립되지 않는다. 먼저 Servlet이 왜 사용되게 되었는지부터 알아보자.
Model 1 아키텍처
고대의 선배 개발자분들은 Model 1 아키텍처 구조로 자바 기반의 웹 애플리케이션 개발을 진행해왔다. Model 1 아키텍처는 JSP와 JavaBeans만 사용하여 웹을 개발하는 것으로 다음 그림과 같은 구조이다.
Model 1 아키텍처 (출처 : 오라클자바커뮤니티)
Model 1 아키텍처에서는 JSP파일이 Controller와 View 기능 모두를 처리한다. 또한, Controller와 View 기능을 모두 처리하므로, 당연히 해당 JSP 파일에 자바 코드와 마크업 관련 코드들이 복잡하게 섞여있다. 이 것은 웹디자이너와 자바 개발자간의 원활한 협업이 힘들뿐만 아니라, 디버깅이나 유지보수에 어려움이 유발된다. 특히, 복잡한 시스템일수록 이 모델이 매우 부적절한 모델이라고 할 수 있다.
Model 2 아키텍처
이런 Model 1의 문제점을 해결하고자 등장한 것이 Model 2 아키텍처이다. 일반적으로 MVC 모델로도 불리는 Model 2 아키텍처에서는 기존에 JSP가 맡았던 Controller기능을 Servlet으로 옮긴게 가장 큰 특징이다. 결과적으로 JSP에는 오직 View와 관련된 디자인만 남게 되므로, 디자이너는 JSP 파일을 관리하고 자바 개발자는 Controller와 Model만 관리하면 된다.
Model 2 아키텍처(MVC 패턴) (출처 : MDN Web Docs)
•
Model: 데이터를 처리하는 부분이다. 비즈니스 로직, 데이터베이스 연동 등과 같은 처리 작업을 담당한다.
•
View: 사용자에게 보여지는 부분이다. 웹 화면, 모바일 앱 UI 등과 같은 UI 작업을 담당한다.
•
Controller: Model과 View를 연결해주는 부분으로, 클라이언트의 요청을 처리하고, 해당 요청에 대한 Model을 호출하여 결과 데이터를 생성한 후, 그 결과를 View에 전달한다.
요약
정리 하자면, “자바를 사용하여 웹 페이지를 동적으로 생성한다”의 뜻은 “웹 클라이언트(웹 브라우저)의 요청(예를 들어, 로그인 페이지)을 처리하고 해당 요청에 대한 데이터를 생성한다” 라고 보면 되겠다.