問題:java
什麼是容器?web
什麼是JSP容器?tomcat
JSP容器的做用是什麼?服務器
什麼是JSP引擎?post
分析:spa
這些問題是相同的,都是描述JSP或者Servlet對象是如何被管理或者運行的。翻譯
回答:xml
首先應該明白,JSP或者Servlet自己的運行與普通客戶端程序是不相同的,客戶端程序是咱們直接調用的,而JSP或者Servlet的運行須要服務器(Tomcat),一般稱爲應用服務器,服務器負責建立JSP或者Servlet對象,而後調用JSP對象或者Servlet對象的相應方法。對象
由誰完成JSP或者Servlet對象的建立、方法的調用的呢?由容器完成,或者稱爲JSP容器。生命週期
容器是用來容納其它組件的,這些組件包括JSP或者Servlet,完成這些組件對象的建立、方法的調用以及對象的銷燬。
容器如何知道建立哪一個JSP或者Servlet的對象的呢?
對於JSP,是根據文件名字肯定的,對於Servlet,是經過web.xml中的配置肯定的。
容器如何知道調用JSP或者Servlet的哪一個方法?
對於JSP,JSP頁面會被轉換成Java類,而頁面中的內容會被轉換成Java類中的某個方法中的內容,而這個方法的名字是固定的,容器會調用這個方法。
對於Servlet,用戶須要根據請求的類型編寫doGet或者doPost方法,容器會根據請求的方式是get仍是post分別調用doGet或者doPost。
而事實上,Tomcat在大多數狀況下充當servlet的容器,也就是說:在寫完JSP代碼後進行第一次執行時,tomcat(servlet容器)先將JSP代碼翻譯成servlet類(java代碼),而後實例化該類,再調用該類的init,service,destory等進行生命週期服務。
當客戶端再進行第二次訪問請求時,此時就沒有servlet容器的翻譯這一步了,由於以前翻譯的java代碼會一直保存,以便於後面的訪問再也不進行翻譯,可大大提升訪問效率。
因此,JSP頁面在第一次被訪問時,其所花費的時間是最長的。