본문 바로가기
IT/Java

Servlet 이란

by eddie_factory 2018. 4. 11.
반응형

Servlet 이란 ?

개발을 하다보면 서블릿이라는 용어자체가 굉장히 낯설게 느껴지는 경우가 있습니다.

서블릿이 무엇인지... 어떤 기술을 말하는건지.... 잘 느낌이 오지 않습니다.



Servlet의 개념.

  • 서블릿이란 Java프로그래밍을 웹 어플리케이션에서 구현하기 위한 기술.
  • Java로 구현된 CGI(Common Gateway Interface)라고 말합니다.
  • 웹프로그래밍에서 클라이언트의 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그래밍 기술

CGI란?

웹서버를 도와서 동적인 페이지를 만들어주는 도우미 애플리케이션을 CGI라고 부릅니다. 특정언어로 구현이 된것이 아닌, 목적에 맞게 여러 프로그래밍언어로 구현가능합니다. 



Servlet Container란?

  • 서블릿만 있다고해서 사용자의 Request와 Response를 처리할 순 없습니다. 서블릿을 관리해주는 Servlet Container가 필요합니다.
  • Servlet Container는 서블릿을 실행하고 생명주기를 관리하는 역할을 합니다.
  • 서블릿과 웹서버간의 통신을 담당해줍니다.
  • 멀티쓰레드를 지원하여 다중요청도 알아서 처리해줍니다.
  • Tomcat 또한 서블릿 컨테이너입니다.



Servlet 동작.

1. 클라이언트가 URL을 통해 HTTP Request를 Servlet Conatiner로 전송합니다.

2. HTTP Request를 전송받은 Servlet Container는 HttpServletRequest, HttpServletResponse 두 객체를 생성합니다.

3. DD(Deployment Descriptor (web.xml))에서 사용자가 요청한 URL을 분석하여 어느서블릿에 대한 요청인지 찾습니다.

4. 서블릿에서 service()메소드를 호출하며 POST, GET의 여부에 따라 doGet(), doPost()를 호출합니다.

5. doGet() or doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse객체에 응답을 보냅니다.

6. 응답이 완료되면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킵니다.



Servlet Container 역할


1. 웹서버와의 통신 지원

서블릿 컨테이너는 서블릿과 웹서버가 손쉽게 통신할 수 있게 해줍니다. 일반적으로 우리는 소켓을 만들고 listen, 

accept 등을 해야하지만 서블릿 컨테이너는 이러한 기능을 API로 제공하여 복잡한 과정을 생략할 수 있게 해줍니다.

그래서 개발자가 서블릿에 구현해야 할 비지니스 로직에 대해서만 초점을 두게끔 도와줍니다.


2 .서블릿 생명주기(Life Cycle) 관리 

서블릿 컨테이너는 서블릿의 생성과 소멸을 관리합니다. 서블릿 클래스를 로딩하여 인스턴스화하고, 초기화 메소드를 호출하고, 요청이 들어오면 적절한 서블릿 메소드를 호출합니다. 또한 서블릿이 역할을 다 하면 Garbage Collection(가비지 컬렉션)을 진행하여 편의를 제공합니다.


3. 멀티쓰레드 지원 및 관리 

서블릿 컨테이너는 요청이 올 때 마다 세로운 자바 쓰레드를 하나 생성하는데, HTTP 서비스 메소드를 실행하고 나면, 쓰레드는 자동으로 죽게됩니다. 원래는 쓰레드를 관리해야 하지만 서버가 다중 쓰레드를 생성 및 운영해주니 쓰레드의 안정성에 대해서 걱정하지 않아도 됩니다.




반응형

댓글