먼저, Servlet이 중요한 이유는, 자바 진영에서 사용되는 대부분의 Framework의 기본 원리는 Servlet 구조를 갖고 있기 때문입니다. 클라이언트의 요청 정보를 외부에 노출시키지 않고 전달받아 처리한 후 아무도 모르게(?) 다시 클라이언트에게 전달되는 구조를 갖고 있죠.
특히나 웹과 관련된 프로젝트에서 신경 쓰이고 고민스러운 것이 MVC(Model, View, Control)의 분리입니다. 이 중에서 Model 부분은 대부분 분리가 되어 있거나 분리하는데 큰 어려움이 없지만, View부분과 Control 부분의 분리는 쉽지 않습니다. 왜냐하면 이 두 부분은 직간접적인 연결 고리가 있어야 하기 때문입니다.
그건 그런데, 왜 굳이 MVC를 분리해야 하는가에 대한 원론적인 질문을 하게 됩니다. 이 부분은 대부분의 입문자분들이나 초급자분들이 공부를 하거나 코딩을 연습할 때, 팀을 이루어 업무별로 분업을 하여 작업할 수 있는 환경이 아니기 때문에 발생하는 의문입니다. 혼자 UI도 만들어야 하고 제어 코드도 만들고, 심지어 서버셋팅과 데이터 베이스를 설계해야 하죠.
그러나 실제 현장에서 하나의 팀에는 디자이너, 퍼블리셔, 스크립터, 코더, 개발자, 시스템 운영자, DB설계자등 다양한 직무를 갖는 사람들이 모여 하나의 프로젝트를 진행하게 됩니다. 따라서 프로젝트가 진행될 때 이들 직무들이 최대한 중첩되지 않게 해야 하며, 서로 독립적인 개발 작업 환경 속에서 작업해야 합니다.
예를 들어 웹 퍼블리셔가 화면에 버튼 하나의 위치를 바꾸기 위해 개발자에 의해 만들어진 코딩을 봐야하거나, 버튼의 위치가 코딩에 영향을 미치는 상황이 발생한다면 아마도 두 직무 사이의 협업은 기대할 수 없을 뿐만 아니라 프로젝트의 진행 자체가 어려울 수도 있게 될 것입니다. 바로 이때 버튼의 위치는 View 영역이라 볼 수 있고, 개발자의 코딩 부분은 Control 영역이라 볼 수 있습니다.
바로 이런 부분들이 최대한 독립적이여야 한다는 말이지요.
Servlet은 View 부분과 Control 부분을 분리해서 독립적인 작업을 할 수 있는 기본적인 구조를 만들어 줍니다.
앞서서 올린 'JavaBean과 JSP만으로 게시판 만들기' 코드들을 보면 스크립틀릿 영역인 <% ... %>을 만들고 그 안에 자바 코드들이 들어가 있고, 동일한 페이지에 HTML을 사용한 UI와 관련된 코드들도 들어 있습니다. 바로 이런 부분에서 웹 디자이너나 웹 퍼블리셔가 버튼의 이동시키거나 버튼의 모양을 바꾸기 위해서는 개발자에 의해 만들어진 코드들도 어쩔 수 없이 봐야 하고, 개발자들 역시 UI에 필요한 코드들을 봐가면서 작업을 해야 합니다. View부분과 Control 부분이 분리가 되지 않았기 때문에 일어나는 어쩔 수 없는 현상입니다.
JSTL(Java Standard Tag Library) 라이브러리 또한 데이터를 표현할 때 개발 코드 유형이 아닌 HTML 태그 유형으로 간단하고 쉽게(?) 데이터를 표현할 수 있어 View와 Model을 분리하는데 커다란 도움을 받을 수 있습니다.
자, 이제 서로 업무별로 분리되지 않았을 때 일어날 수 있는 상황을 알았으니, Servlet과 JSTL을 사용하여 서로 고유한 일에만 직중할 수 있도록 Model, View 그리고 Control 부분을 최대한 분리하여 게시판을 만들어 봅시다.