JSP 동작원리

IT(Old)/Eclipse 2008. 9. 3. 21:28

JSP 동작원리

1. HTTP서버

웹 서버라고 부른다. 주로 웹 브라우저를 통해 전송되는 HTTP요청을 받아 이를 해석하고, 처리 결과를 클라이언트에게 전송한다.



2. 서블릿 컨테이너

클라이언트로부터 전송된 요청 중 서블릿 컨체이너가 처리하도록 지정된 URL에 대해 서블릿이 처리한다. 처리후 웹 서버에게 넘겨주면 웹 서버는 클라이언트에게 응답을 전송한다.



3. 페이지 컴파일 서블릿

서블릿 컨테이너는 .jsp 를 만나면 페이지 컴파일을 담당하는 페이지 컴파일 서블릿을 호출하고 필요시 .jsp에 상응하는 서블릿 코드를 생성하여 이를 컴파일하고 실행한다.
.jsp파일은 이 과정을 통해 서블릿으로 컴파일 되어 서블릿 컨테이너가 실행하게 된다.




<hello.jsp 실행과정>
1. 클라이언트가 브라우저 주소창에 hellp.jsp의 경로를 입력히서 HTTP요청을 보낸다.

2. 웹 서버는 요청받은 URL이 서블릿 컨테이너가 처리하도록 지정된 것임을 알고 이 요청을 서블릿 컨테이너에게 넘긴다.

3. 서블릿 컨테이너는 hello.jsp가 페이지 컴파일러가 처리하도록 설정되어 있음을 알고 이 요청을 페이지 컴파일러에게 넘긴다.

4. 페이지 컴파일 서블릿은 hello.jsp 파일에 대한 서블릿 코드가 존재하는가를 확인한다.

5. 만약 존재하지 않는다면 hello.jsp 파일에 대한 JSP서블릿 코드를 생성하고 이를 컴파일하여 실행한다.

6. 만약 서블릿 코드가 존재하지만 이 코드의 생성시간이 hello.jsp 파일의 최근 수정된 시간보다 이전이라면 새로운 JSP서블릿 코드를 생성하고 컴파일한다.(이건 WAS마다 다른듯)

7. hello.jsp 파일에 대한 서블릿 코드가 존재하고, 이후에 파일이 수정이 되지 않은 경우에는 다시 컴파일하지 않고 이전에 컴파일된 JSP 서블릿의 인스턴스가 메모리에 존재하는지 확인한다.

8. 인스턴스가 메모리에 존재하는 경우 해당인스턴스를 실행하고, 그겋지 않은 경우 새로운 인스턴스를 생성하여 실행한다.

9. 페이지 컴파일러는 생성하고 실행한 JSP서블릿의 응답이 반대로 서블릿 컨테이너를 거쳐 웹 서버를 통해 클라이언트 브라우저에 HTTP Response로 전송된다.