JSP/Servlet 처리과정
① Client가 브라우저를 통해 페이지(예,spatium.co.kr/happy) 요청(Http Request)
- 웹 서버(여기서 말하는 웹서버란 Apache와 같은 정적인 페이지를 처리하는 서버)는 Client가 요청한 url을 받아 확인
- 웹서버가 처리 할 수 있는 요청인지 아닌지에 대해서 먼저 판단
- Client가 요청한 url은 동적인 페이지를 담고 있었기 때문에 웹서버는 컨테이너에게 요청을 위임
- 여기서 말하는 컨테이너란 웹 어플리케이션 서버(대표적인 예로 tomcat)
- 웹 어플리케이션 서버는 정적인 요청(html, 이미지 파일등) 이외 servlet을 생성하고 사용할 수 있음
- Servlet이란 Java 언어를 기반으로 동적인 contents를 생성, JAVA 코드 안에 HTML 태그가 섞여 있는 형태
② 컨테이너는 웹 서버가 위임한 요청을 파악
- 요청 URL에 매핑되는 Servlet을 가지고 있는지 DD(Deployment Desciber) 배포서술자를 이용하여 찾게 됨
- 배포 서술자란, web.xml을 일컫는 말로써 톰캣(컨테이너)의 실행환경에 대한 정보를 가지고 있는 '환경설정' 파일
web.xml 에서 servlet 요청을 찾는 부분, 예
- 설정을 살펴보게 되면 Servlet-mapping을 통해 길동이 보낸 요청과 매칭되는 서블릿이 있는지 찾음
- Client가 보낸 url(spatium.co.kr/happy)를 보면 뒤에 /happy라는 부분이 있는데 매핑되는 부분을 찾음
- 컨테이너는 /happy url을 처리하는 basic이라는 서블릿으로 해당 요청을 처리
③ 컨테이너에 basic 서블릿이 적재되어 있는지 확인, 없으면 객체 생성
- 서블릿이 적재되어 있지 않으면 request와 response 객체를 생성하고 해당하는 서블릿의 스레드를 생성하여 앞의 두 객체를 인자로 넘기게 됨
- 서블릿이 객체를 인자로 받아 init() 초기화 작업
- 초기화가 끝나면, 스레드는 servlet의 service() 메소드를 호출
- 요청받은 방식이 GET방식인지 POST 방식인지에 따라 DoGet(), DoPost() 메소드 중에서 선택
④ 디스패처 서블릿에게 응답을 보냄
- 요청을 처리
⑤ 요청을 처리하여 VIEW를 컨테이너에게 반환
- 컨테이너는 다시 WebServer에게 반환
- WebServer는 Client에게 반환
Ref : http://blog.naver.com/kim3zz/220273028176
|