Servlet 이란?

  • 클라이언트 요청을 처리하고, 그 결과를 반환하는 자바 웹 프로그래밍 기술을 칭한다.
  • servlet은 Servlet 클래스의 구현 규칙을 따른다.

정리를 하면 서블릿은 자바로 웹을 제작할 때 필요한 기술로 클라이언트가 어떤 요청을 하면 요청한 결과를 다시 응답으로 전송해야하는데 이때 사용하는 자바 프로그램이라고 할 수 있다.

서블릿은 정적인 웹페이지를 제공하는 웹 서버와 달리 다양한 요청을 통해 동적 페이지 웹 서비스를 제공하기위해 사용자가 요청한 시점이 페이지를 생성해서 전달할 때 사용되는 WAS(웹 어플리케이션 서버)에서 사용하는 기술이 서블릿이다.

여기서 등장하는 웹 서버와, 웹 애플리케이션 서버가 다른 점을 기술하자면

웹 서버 Web Server

HTTP 요청을 받아 Static Contents(정적 콘텐츠)를 제공하는 서버, 프로그램을 의미한다. 구체적인 기능을 정리하면
기능 1: 정적인 컨텐츠 제공

  1. 정적인 컨텐츠 제공
    • WAS를 거치지 않고, 바로 요청한 컨텐츠를 제공할 수 있다.
  2. 동적인 컨텐츠 제공을 위한 요청 전달
    • 요청을 WAS에 보내고, WAS가 처리한 결과를 클라이언트에게 전달할 때 사용한다.

웹 어플리케이션 서버 Web Application Server

다양한 서버 내 알고리즘, 비즈니스 로직, DB 조회 등 클라이언트 요청에 따라 동적인 콘텐츠를 제공하는 서버, 프로그램이다.
예) Tomcat

WAS는 서블릿 컨테이너를 통해 여러 서블릿을 관리하는데
서블릿 컨테이너는 서블릿의 생성, 실행, 파괴를 담당한다.

서블릿 컨테이너는 클라이언트의 Request를 받아주고, Response를 할 수 있도록
웹 서버와 SeverSocket을 통해 통신하는데 Socket을 생성하고, 특정포트에 리스닝을 하고 있다가 연결요청이 들어오면 스트림을 생성한다.

서블릿 생명주기

서블릿은 3가지의 생명주기를 가지고있다.
1. init()
2. service()
3. destroy()

init()

  • 서블릿 생명주기에서 초기화 단계에 호출 되는 메서드이다.
  • 해당 메서드를 호출하여 Servlet을 초기화 한다.

service()

  • 초기화 이후 HTTP 요청이 될 때 마다 호출 된다.
  • 각 요청들은 각각의 스레드에처 요청을 처리한다.
  • 해당 메서드는 HTTP 요청(GET, POST)을 처리하는 [doGet(), doPost()]를 호출한다.

destroy()

  • 서블릿 객체가 제거되야할 때 호출된다.

[서블릿 동작방식]

  1. 사용자(클라이언트)가 URL을 요청하면 HTTP Request가 Servlet Container로 전송한다.
  2. 요청을 받은 Servlet Container는 HttpServletRequest, HttpServletResponse 객체를 생성한다. 해당 객체들은 요청할 때 마다 새롭게 생성된다.
  3. web.xml을 기반으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾는다.
  4. 해당 서블릿에서 Service 메서드를 호출한 후 클라이언트의 GET, POST 여부에 따라 doGet(), doPost()를 호출한다.
    5.호출 뒤 HttpServletResponse 객체를 통해 응답을 전달한다.
  5. 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸 시킨다.
profile
감성 프로그래머 HoduDeuk

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN