http server 에서 servlet 요청 처리
- HTTP server : url 을 resolve 해준다.
- Web container : servlet, jsp 에 대한 request 처리를 해준다.
위의 server와 container 에 대한 설명은 여기 그림을 보면 명확하다.
HTTP server로 들어온 url 요청이 들어오면 HTTP server 가 web.xml(Deployment Descriptor) 를 보고 이 url 요청이 servlet 에 mapping 되어 있는지를 판단한다.
그리고, servlet 요청이라면, web container 로 넘겨준다.
한개의 web container 는 여러개의 servlet instance 를 가지고 있는데, 중복된 servlet instance 를 가지고 있지 않다.
web container 에서 jsp 처리
url 요청이 jsp 이면,
웹 컨테이너는 jsp 를 parsing 하여 java code 로 변환한다.
html 태그로 된 부분들은 서블릿 소스처럼 write() 메서드를 사용하는 방식으로 변환한다.
이 java code file 을 compile 하여 servlet class 파일을 만들게 된다.
만들어진 servlet class 가 실행되면 가장 먼저 인스턴스를 생성하고 init() 메서드에 의해 초기화 된다.
그 후 request 따른 thread 가 하나 생성되어 service() method 를 호출하게 되고,
request type 에 따라 doGet() 또는 doPost() method 가 실행되어 HTML 로 이뤄진 결과 페이지가 생성된다.
이 페이지가 web server 에 전달돼서 user 에게 전달된다.
두번째 요청부터는 이미 생성된 instance 에서 thread 만 하나씩 생성되어 service() 메서드를 호출한다.
url 요청이 jsp 인 경우
- web container가 jsp -> java code
- servlet class 생성 : java code -> compile -> servlet class
- servlet class 실행 : create instance, execute init() method
- request 에 따른 thread 생성 --> call service() --> doGet() or dePost() --> HTML page 생성
See Also
- eclipse 에서 jsp servlet source 연결하기
- include action 과 include directive 의 차이 : http://javarevisited.blogspot.kr/2012/01/difference-between-page-include-and.html
댓글 없음:
댓글 쓰기