JSP是一種Servlet,可是與HttpServlet的工做方式不太同樣。HttpServlet是先由源代碼編譯爲class文件後部署到服務器上的,先編譯後部署。而JSP則是先部署源代碼後編譯爲class文件的,先部署後編譯的。Jsp會在客戶端第一次請求時編譯爲HttpJspPage類(接口Servlet的一個子類)。該類會被服務器臨時存放在服務器工做目錄裏面。 java
客戶端第一次請求X.jsp時,Tomcat先將X.jsp轉化爲標準的java源代碼X_jsp.java,存放在tomcat\work\Catalina\localhost\jsp\org\apach\jsp目錄下,並將X_jsp.java編譯爲類文件X_jsp.class.該class文件即是JSP對應的Servlet。編譯完畢後再運行class文件來響應客戶端請求。之後客戶端訪問X.jsp時,服務器將再也不從新編譯JSP文件,而是直接調用X_jsp.class來響應客戶端請求。 tomcat