웹 서버에는 JSP 페이지를 처리하는 컨테이너인 JSP 엔진이 필요합니다. 컨테이너는 JSP 페이지에 대한 요청을 가로채는 역할을 담당합니다. 이 튜토리얼에서는 JSP 개발을 지원하기 위해 JSP 컨테이너가 내장된 Apache를 사용합니다.
JSP 컨테이너는 웹 서버와 협력하여 JSP의 정상적인 작동에 필요한 운영 환경과 기타 서비스를 제공하고 JSP 웹 페이지에 고유한 특수 요소를 정확하게 식별할 수 있습니다.
다음 그림은 웹 애플리케이션에서 JSP 컨테이너와 JSP 파일의 위치를 보여줍니다.
다음 단계에서는 웹 서버가 JSP를 사용하여 웹 페이지를 만드는 방법을 보여줍니다.
다른 일반 웹페이지와 마찬가지로 브라우저는 서버에 HTTP 요청을 보냅니다.
웹 서버는 이것이 JSP 웹 페이지에 대한 요청임을 인식하고 해당 요청을 JSP 엔진에 전달합니다. 이는 URL 또는 .jsp 파일을 사용하여 수행됩니다.
JSP 엔진은 디스크에서 JSP 파일을 로드하여 서블릿으로 변환합니다. 이 변환은 단순히 모든 템플릿 텍스트를 println() 문으로 변환하고 모든 JSP 요소를 Java 코드로 변환합니다.
JSP 엔진은 서블릿을 실행 가능한 클래스로 컴파일하고 원래 요청을 서블릿 엔진에 전달합니다.
웹 서버의 구성 요소는 서블릿 엔진을 호출한 다음 서블릿 클래스를 로드하고 실행합니다. 실행 중에 서블릿은 HTML 형식으로 출력을 생성하고 이를 HTTP 응답에 포함시켜 웹 서버에 제출합니다.
웹 서버는 정적 HTML 웹 페이지 형식으로 HTTP 응답을 브라우저에 반환합니다.
궁극적으로 웹 브라우저는 마치 정적 웹 페이지인 것처럼 HTTP 응답에서 동적으로 생성된 HTML 페이지를 처리합니다.
위에서 언급한 단계는 다음 그림으로 나타낼 수 있습니다.
정상적인 상황에서 JSP 엔진은 JSP 파일에 해당하는 서블릿이 이미 존재하는지 확인하고 JSP 파일의 수정 날짜가 서블릿보다 이전인지 확인합니다. JSP 파일의 수정 날짜가 해당 서블릿보다 이전인 경우 컨테이너는 JSP 파일이 수정되지 않았으며 서블릿이 유효한지 확인할 수 있습니다. 이는 전체 프로세스를 다른 스크립트 언어(예: PHP)보다 더 효율적이고 빠르게 만듭니다.
일반적으로 JSP 웹 페이지는 Java 프로그래밍 전문가가 되지 않고도 서블릿을 작성할 수 있는 또 다른 방법입니다. 해석 단계를 제외하면 JSP 웹 페이지는 거의 일반 서블릿처럼 처리될 수 있습니다.