728x90
반응형

Servlet의 동작원리


1. Client의 URL 요청

  클라이언트가 URL요청을 하면 웹서버는 .xml 파일을 통해서 Servlet 요청을 알아챈다.

  이 때 .xml 파일은 웹서버 측에서 URL과 Servlet 클래스를 미리 Mapping 시켜 놓은 Depolyment Descriptor(배포서술자)이다.


2. Request, Response 객체 생성

  Web Container는 받은 요청을 처리하기 위해 

  HTTP 요청(Request)을 처리하기 위한 Request 객체와

  HTTP 응답(Response)을 위한 Response 객체를 생성한다.


3. Servlet 인스턴스와 Thread 생성

  Request, Response 객체가 생성된 뒤 사용자의 URL 요청이 어떤 서블릿을 필요로 하는지 xml 파일을 통해서 알아낸다.


  클래스가 Web Container에서 한 번도 실행된 적이 없거나 현재 메모리에 생성된 인스턴스가 없는 경우

  새로 인스턴스를 생성하고 init() 메소드를 실행하여 초기화 한 뒤 스레드를 하나 생성한다.


  이미 Web Container에서 실행하였거나 인스턴스가 존재하는 경우

  기존 인스턴스에 스레드만 생성한다.


  각 Servlet 인스턴스는 웹 컨테이너당 하나만 존재하기 때문에

  init() 메소드는 각 서블릿 당 한 번 씩만 호출된다.


4. service() 메소드 호출과 Servlet Class 실행

  스레드가 생성되면 각 스레드에서 service() 메소드가 호출된다. 이 메소드가 호출 되면

  HTTP 요청방식이 GET 방식일 경우에는 doGet() 메소드, POST 방식을 경우에는 doPost() 메소드가

  request, response 객체를 인자로서 자동으로 호출한다.


5. 응답과 스레드의 소멸

  doGet() 또는 doPost() 메소드가 호출되어 사용자의 요청에 따른 동적인 웹 페이지를 생성하면

  그 결과물이 담긴 Response 객체를 웹 컨테이너가 HTTP 응답(Response) 형태로 바꾸어 웹서버로 전송하게 된다.

  그리고 사용이 끝난 Requset와 Response 객체를 소멸시키고 스레드를 종료하게 된다.



출처 : http://liketh.tistory.com/239

728x90
반응형