💎서블릿의 동작원리💎
(1) 브라우저에서 서블릿을 요청한다.
(2) WAS 안에 웹 서버가 서블릿 요청을 인식하여 서블릿 컨테이너에게 서블릿을 수행하도록 넘겨준다.
(3) 서블릿은 스레드를 기동하여 해당 서블릿 객체를 생성하여 이를 수행한다.
(4) 서블릿 객체의 작업이 종료되면 기동되었던 스레드가 종료된다.
(5) 서블릿 수행 결과가 웹 서버에 전송된다.
(6) 이를 클라이언트에 전송한다.
💎서블릿의 라이프 사이클 Servlet life cycle💎
(1) 객체가 생성되면서 init()
메소드가 단 한번 호출된다. init()
메소드에서는 주로 초기화 작업을 한다.
(2) 그 후에는 클라이언트의 요청이 있을 때 doGet()
혹은 doPost()
메소드가 실행된다.
(3) 여러 클라이언트가 동시에 요청을 하더라도 스레드가 생성되므로 동시에 doGet()
혹은 doPost()
메소드가 실행되기 때문에 수행 속도가 빠르다.
(4) 서블릿이 더 이상 서비스를 하지 않을 경우 destroy()
메소드가 호출된다. (톰캣 재가동, 서블릿 내용이 변경되어 컴파일해서 클래스 파일이 바뀌는 경우)
(1) 사용자가 서블릿에 대한 링크(URL
)을 클릭한다.
(2) 컨테이너는 요청된 Request
가 서블릿이라는 것을 간파하고는 두개의 객체를 생성한다. -> Response
, Request
(3) 접수한 요청의 URL
을 분석하여 어떤 서블릿을 요청했는지 파악한다. 그 다음 해당 서블릿 스레드를 생성하여 Request
, Response
객체 참조를 넘긴다.
(4) 컨테이너는 서블릿 service()
메소드를 호출한다. 브라우저에 지정한 방식에 따라 doGet()
을 호출할 지, doPost()
를 호출할지 결정한다. 클라이언트가 HTTP
GET
메소드를 날렸다면 service()
메소드는 서블릿의 doGet()
메소드를 호출한다. 호출할 때 Request
와 Response
객체를 인자로 넘긴다.
(5) 서블릿은 클라이언트에게 응답을 작성(write
)하기 위하여 Response
객체를 사용한다. 이 작업을 완료하면, Response
에 대한 제어는 컨테이너에게 넘어간다.
(6) Service()
메소드가 끝나면, 스레드를 소멸하거나 아니면 컨테이너가 관리하는 스레드 풀로 돌려 보낸다. 그 다음 Request
와 Response
객체를 가비지 컬렉션이 될 준비를 하고, 이 객체에 대한 참조는 이제 사라진다. 마지막으로 클라이언트는 서버로부터 응답을 받는다.
*** 글의 정보는 아래 출처들로 부터 참고했습니다.
*** 또는 참고하기 좋은 글
'개발 지식 > computer science' 카테고리의 다른 글
C와 Java의 특징과 차이점 (0) | 2020.07.25 |
---|---|
프레임워크(Framework)와 라이브러리(Library) (0) | 2020.03.04 |