본문 바로가기
Back/Java

HTTP & Servlet & Servlet Container

by chris_jaehun 2022. 11. 7.
반응형

설명에 필요한 몇 가지 용어들 먼저 알아보면,

 

w3 : www, World Wide Web, 인터넷에 연결된 컴퓨터를 통해 사람들이 정보를 공유할 수 있는 전 세계적 정보 공간

Protocol : 컴퓨터 내부, 컴퓨터 사이에서 데이터 교환 방식을 정의하는 규칙 체계, 규칙의 집합, 규약

HTTP는 전 세계적 정보 공간에서 정보를 주고받을 수 있는 데이터 교환에 대한 규약이다.

HTTP는 클라이언트와 서버 사이에서 이루어지는 요청(request)과 응답(response) 규약이다.

 

조금 더 풀어보면 인터넷 브라우저가 HTTP를 통해 서버에 웹페이지(HTML)나 데이터(그림이나, 글 같은)를 요청하게 되면, 서버는 이 요청에 응답하여 클라이언트(유저)에게 요청받은 데이터를 응답해준다. 이 데이터를 모니터(출력장치)를 통해 보여주는 것이다.

 

그럼 이 요청을 자바에서는 어떻게 처리할까

 

클라이언트의 요청(request)을 처리하고 결과를 응답(response)해주는 웹 프로그래밍 기술이 바로 Servlet이다.

그리고 이 Servlet의 생명 주기를 관리해주는 것이 바로 Servlet Container이다. 컨테이너는 Servlet이 클라이언트의 request(요청)를 받아주고 response(응답)할 수 있도록 웹서버와 소켓을 만들어 통신한다. 컨테이너의 대표적인 서비스로는 Tomcat이 있다.

Servlet의 동작과 컨테이너에 의한 생명주기는 다음과 같다.

 

  1. 클라이언트가 URL을 통해서 보낸 HTTP request는 Servlet Container로 간다.
  2. 컨테이너는 HttpServletRequest, HttpServletResponse 두 객체를 생성하고 요청받은 정보를 HttpServletRequest에 저장한다.
  3. 컨테이너는 클라이언트가 보낸 URL을 분석해서 어느 Servlet에 대한 요청인지를 알아서 찾는다.
  4. 해당 HTTP 요청 처리에 필요한 Servlet이 로딩되어 있지 않다면 Servlet 인스턴스를 생성하고 init()을 호출한다.
    ㄴ 로딩되어 있으면 바로 service()를 호출
  5. 클라이언트의 요청이 들어올 때마다 service()를 실행하여 요청의 GET, POST 여부에 따라 doGet(), doPost()를 호출한다.
  6. 동적 페이지를 생성하여 HttpServletResponse 객체에 담아 응답해준다.
  7. 서버가 종료되거나 Servlet을 더 이상 사용할 필요가 없어지면 컨테이너는 destroy()를 통해 Servlet 인스턴스를 소멸시킨다.
    또한 JVM의 Garbage Collector에서 Servlet 인스턴스를 제거할 수 있도록 표시해두고 Garbage Collector는 표시된 Servlet 인스턴스를 제거한다.

 

여러 자료들을 찾아가며 나름 정리해보았다. 구글링 해보면 더 쉽게 이미지로 설명해주신 분들이 많아서 참고해보면 좋을 것 같다.

 

반응형