서버 프로토콜 종류에 관계없이 FTP, SMTP, HTTP등 여러가지 애플리케이션 기반의 응용프로그램 개발 가능
서블릿을 주로 활용하는 주요 서버 환경은 웹 환경에서 HTTP 프로토콜 사용하며 HTTP 프로토콜을 기반으로 한 서블릿 프로그램을 주로 구현.
서블릿은ㅇ 클라이언트 요청에 대하여 서블릿 컨테이너에 의해 독립된 스레드 기반으로 서비스가 되는 기술로, 다중 스레드 서비스가 기본적으로 제공된, 그러므로 프로세스 기반의 서비스인 CHI에 비해 수행속도가 빠름.
서블릿 컨테이너는 클라이언트에서 전송되는 서블릿 요청(Request)와 응답(Response)에 대한 처리를 담당.
서블릿 동작 과정
웹 클라이언트는 웹 서버에서 HTTP 요청(GET/POST) 메시지를 보냄. 이때, 필요에 따라 매개변수와 웹 서버로부터 전달받아서 보관하고 있던 쿠키정보를 같이 보낼 수도 있음.
웹 서버는 웹 클라이언트로부터 들어온 HTTP 요청을 해석하며, 서블릿에 대한 요청일 경우 서블릿 컨테이너에게 네트워크를 통해서 요청을 전달함. 이렇게 네트워크를 통해서 웹 서버와 서블릿 컨테이너가 메시지를 주고받기 때문에, 웹 서버가 실행되는 컴퓨터와 서블릿 컨테이너가 실행되는 컴퓨터는 달라도 상관 없다. 대신, 두 대의 컴퓨터는 네트워크로 연결되어 있어야 함.
웹 서버로부터 클라이언트의 요청을 전달받은 서블릿 컨테이너는 해당 서블릿을 생성하여, 서비스를 수행할 수 있도록 service()메 소드를 호출함.** 실제로, 내부적으로는 보다 복잡한 처리가 이루어짐.
서블릿은 서블릿 컨테이너에 의해 인스턴스가 생성되어 필요에 따라 init() 메소드가 호출되어 초기화되고, 다음으로 실제로 서비스를 수행하기 위한 service() 메소드가 호출됨.
서블릿에서는 서비스를 수행한 후, 해당 결과를 알려주기 위한 결과 페이지를 웹 서버에게 네트워킹을 통해서 전달.
웹 서버는 서블릿 컨테이너로부터 전달받은 결과 페이지를 웹 클라이언트에게 HTTP응답으로서 되돌려줌.
서블릿과 JSP의 변천과정
서블릿이 JSP보다 먼저 등장.
서브릿은 HTML 즉, 프리젠테이션 로직이 자바소스 코드 내에 포함되어 아주 간단한 HTML 코드가변경되더라도 서블릿을 매번 재컴파일 해야 하는 불편함이 있었음
이 문제점을 상호보완하는 스크립팅 형태의 JSP가 등장
JSP가 서블릿보다는 프리젠테이션 로직관리가 훨씬 쉬워졌지만 여전히 JSP 페이지내에 자바코드와 HTML이 혼재되어 있는 문제점은 있음.
이에 JSP 페이지 내에 포함된 자바코드를 태그(Tag)처럼 사용할 수 있도록 해주는 커스텀 태그(Custom Tag)를 표준 라이브러리 형태로 제공해주는 JSTL(Java Server Tag Library) 가 등장하게 됨.
MVC패턴을 적용한 모델-1(Model-1), 모델-2(Model-2) 방식이 등장.
Model-1 방식은 사용자의 요청을 받는 부분(Controller 역할)이 JSP.
Model-2 방식은 사용자의 요청을 받는 부분(Controller 역할)이 서블릿.
Model-2 방식은 컨트롤러역할을 서블릿이 담당하게 하여, 비즈니스 로직과 프리젠테이션 로직을 더 잘 분리하게 해주는 방식.
이후, Model-2 기반의 오픈 소스 프레임워크(Structs, Spring MVC)이 등장하게 되었음.