본문 바로가기
IT

맛있는 코딩 - 서블릿이란

by 청바지 입고 개발자 2021. 1. 29.
반응형

서블릿(Servelet)이란

요청과 응답(Request/Response)을 제공하는 서비스 기능을 제공하기 위해 서버사이드(Server Side)에서 수행되는 자바에서 제공하는 대표적인 웹 애플리케이션 모듈입니다.

 

서블릿은 서블릿 컨테이너를 탑재한 WAS(Web Application Server)에서 관리되고, 동적 콘텐츠를 제공할 수 있는 웹 컴포넌트라고 할 수 있습니다.   

 

서블릿 스펙은 Java Version에 따라 발표가 되는데 아래 사이트에서 확인할 수 있습니다.

 

<서블릿 스펙 확인>

The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 369

Stage Access Start Finish Final Release Download page 05 Sep, 2017   Final Approval Ballot View results 01 Aug, 2017 14 Aug, 2017 Proposed Final Draft Download page 20 Jun, 2017   Public Review Ballot View results 23 May, 2017 05 Jun, 2017 Public Review

jcp.org

서블릿 컨테이너란

클라이언트의 요청과 응답을 네트워크를 통해 제공하는 웹서버 또는 웹 애플리케이션 서버에 포함되며 서블릿의 생성과 소멸의 과정을 관리해 줍니다. 즉, 서블릿의 라이프사이클을 관리해 주는 역할을 하고 있습니다.

 

대표적인 서블릿 컨테이너로 오픈소스로 많이 활용되는 Tomcat등이 있습니다.

 

 

서블릿의 요청과 응답(Request and Response)

간단하게 설명하기 위해 많이 사용되는 WAS앞단의 웹서버 구조는 생략하도록 하겠습니다. 

 

 

Http Rquest와 Http Response의 흐름도 

 

1) 클라이언트(웹브라우저)에서 Http프로토콜을 이용하여 서블릿(Servlet)을 호출한다.

2) WAS(Web Application Server)가 요청을 받아서 Servlet 클래스가 메모리에 있는지 확인 후 없다면  Class Loader에서 Servlet클래스를 로드하고 Init메서드 수행  그렇지 않을 경우에는 2번의 과정은 생략하고 3번을 수행하여 Service 메서드 수행한다. (응답에 대한 모든 내용이 Service메서드 안에 구현됨)

4) Thread Pool을 사용하여 Thread를 할당한다.

5) 서블릿이 WAS에 처리결과를 전달한다.

6) WAS는 결과 값을 클라이언트(브라우저)에 전달한다.

 

 

서블릿의 생명주기(LifeCycle) 

 

서블릿 컨테이너의 쓰레드 생성 프로세스

 

- 클라이언트로부터 요청이 오면 컨테이너는 요청이 서블릿임을 확인하고 request객체와 response객체를 생성합니다.

- 사용자가 호출한 URL을 분석하여 어떤 서블릿에 대한 호출인지 확인하고 Thread를 생성하여 request개체와 responser객체를 인자로 받습니다. 

- 컨테이너는 service()를 호출하고 doGet() 또는 doPost()를 호출합니다.

- doGet()는 동적인 페이지를 생성한 후 Response객체에 실어 보내고 컨테이너는 Http Respsne로 변환하여

Client로 전달을 하게 됩니다.

 

init() 메서드 

서블릿이 최초로 사용되어 객체가 생성될 때 딱 한번 호출되는 메서드이다.

 

service() 메서드

응답에 대한 모든 내용은 service메서드에 구현되어야 한다. 

요청방식에 따라 doGet(), doPost() 등의 메서드를 오버라이드 하여 사용한다.

 

destroy() 메서드

서블릿은 destroy메서드가 호출되면서 할당받았던 자원을 되돌려 줄 수 있다. 호출되는 시점은 임의로 호출하진 않고 서블릿 컨테이너가 일정 시간 호출이 없을 경우 서블릿을 destroy 시킨다.

반응형

댓글