서블릿 | 김영한MVC1편
이전 시간에서, 클라이언트가 HTTP 통신으로 서버에게 요청을 하면 서버는 그에 따른 응답을 한다고 알게 됐다. 클라이언트는 HTTP 통신 규약에 맞는 다양한 형식으로 전송한다. HTTP는 단순한 텍스트로 이루어져있는데, 서버는 이것을 어떻게 이해하고 응답을 보내는 것일까
우측이 클라이언트가 요청한 HTTP 메시지이다. 이걸 직접 개발자가 만드려면 우선 메시지를 받을 TCP/IP 연결 대기로직을 짜고, 소켓 연결을 하고,, HTTP 표준에 따라 해당 텍스트들을 자르고, 파싱하고,,,모든 HTTP 텍스트 메시지마다 이것을 처리한다고 하면,,,,,
다행히 서블릿을 지원하는 WAS는 이러한 복잡한 전/후 처리를 자동으로 해결해준다. 따라서 개발자는 해당 url에 따른 처리 알고리즘. 즉 비즈니스 로직만 구현하면 된다.
서블릿
서블릿은 Java EE 기술의 일부로, 서버에서 클라이언트의 요청을 처리하고 동적인 응답을 생성할 수 있는 코드 로직이다.
개발자는 서블릿을 이용하여 비즈니스로직을 구현하는 것, 즉 요청을 받고, 응답을 내보낸다고 보면 된다.
서블릿의 주요 기능은 1. 요청처리 2. 응답생성 3. 세션관리 4. 필터와 리스너 기능이 있으며, 필터와 리스너를 통해 전/후 처리 기능을 구현해낼 수 있다.
WAS는 서블릿을 제어하는 환경을 제공하며, 서블릿을 통해 HTTP 메시지를 전/후 처리하여 개발자의 부담을 줄여준다.
서블릿의 최근 형식
- urlPatterns(/hello)의 URL이 호출되면 서블릿 코드가 실행된다. (WAS가 제어)
- HTTP 요청 정보를 편리하게 사용할 수 있는 HttpServletRequest (WAS가 이 객체에 요청정보들을 담아준다.)
- HTTP 응답 정보를 편리하게 제공할 수 있는 HttpServletResponse (WAS가 응답정보를 만들 때, 이 객체를 참조한다.)
- WAS덕분에 개발자는 HTTP 스펙을 매우 편리하게 사용
흐름
웹 브라우저가 HTTP 형식에 맞춘 요청을 보내게 되면 WAS에서 해당 메시지를 처리하여 request 객체에 내용들을 담는다. 이후 사용한 reponse 객체도 생성한다.
그리고 요청한 url에 맞는 서블릿을 호출한다, 개발자가 짜놓은 로직대로 동적인 처리가 되고, 리턴을 하면,
WAS는 reponse 객체를 참조하여 HTTP 형식에 맞춘 응답 메시지를 브라우저에게 전달한다.
브라우저는 응답 메시지를 확인하여 HTML파일로써 클라이언트의 브라우저화면에 보여주게(랜더링) 된다.