Web
Servlet (1)
Philip.Box
2019. 9. 28. 16:03
Servlet (1)
서블릿 개요
- Servlet(Server Side Applet)의 약어.
- 웹 컨테이너에서 수행되는 Java 클래스
서블릿 특징
- 서블릿은 서버의 응용프로그램을 구현하는 기술.
- 서버 프로토콜 종류에 관계없이 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)이 등장하게 되었음.