Search
Duplicate

Servlet과 MVC모델

Created time
2023/04/10 12:24
Last edited time
2023/07/11 01:22
Status
Done
tag

들어가기 전에

참고한 자료를 바탕으로 비전문가가 정리한 글이므로 오류가 있을 수 있습니다.
오류에 대한 지적 사항은 언제든지 환영합니다. 부디 댓글로 알려주시길 바랍니다. 감사합니다.

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에 전달한다.

요약

정리 하자면, “자바를 사용하여 웹 페이지를 동적으로 생성한다”의 뜻은 “웹 클라이언트(웹 브라우저)의 요청(예를 들어, 로그인 페이지)을 처리하고 해당 요청에 대한 데이터를 생성한다” 라고 보면 되겠다.

참고