最近要做一個servlet改修的項目,正好藉此機會複習下servlet,好多年不用了,看看能想起來多少.
結論:※※※※JSP就是Servlet※※※※
servlet的命名 Server + Applet =Servlet 意為伺服器端的小程式
JSP就是Java Server Page,Java伺服器頁面的意思
其實java虛擬機器是不認識jsp這種東西的, jsp在被使用的時候會被容器轉換成servlet,然後被調用.
你去的你tomcat目錄下的work\Catalina\localhost\下這個檔案夾裡能找到和你項目同名的檔案,這裡有你jsp轉成的servlet的.java和class檔案
Servlet是伺服器端小程式,其產生早於JSP,後來發現直接在Servlet裡輸出使用者web介面很困難,就誕生了JSP,其專門用於輔助servlet進行web頁面的展示,即作為web開發的表現層。JSP其實在伺服器端還是首先被編譯為servlet(一般在客戶第一次訪問的時候),所以其實質還是一種特殊的servlet,只不過一般專用於頁面的展現.
我的理解是,JSP更像一個模板,很多東西是固定的,程式員只需要關注其中的java代碼的實現就可以了.
而servlet沒有模板,它的輸出完全是依賴java代碼來完成,就連頁面中的"<tr>""<td>"這種標籤都要程式手動寫到java代碼裡.
Servlet生命週期
裝載Servlet。這項操作一般是動態執行的。然而,Server通常會提供一個管理的選項,用於在Server啟動時強制裝載和初始化特定的Servlet。
Server建立一個Servlet的執行個體
Server調用Servlet的init()方法
一個用戶端的請求到達Server
Server建立一個請求對象
Server建立一個響應對象
Server啟用Servlet的service()方法,傳遞請求和響應對象作為參數
service()方法獲得關於請求對象的資訊,處理請求,訪問其他資源,獲得需要的資訊
service()方法使用響應對象的方法,將響應傳回Server,最終到達用戶端。service()方法可能啟用其它方法以處理請求,如doGet()或doPost()或程式員自己開發的新的方法。
對於更多的用戶端請求,Server建立新的請求和響應對象,仍然啟用此Servlet的service()方法,將這兩個對象作為參數傳遞給它。如此重複以上的迴圈,但無需再次調用init()方法。一般Servlet只初始化一次(只有一個對象),當Server不再需要Servlet時(一般當Server關閉時),Server調用Servlet的Destroy()方法。
servlet的工作模式
用戶端發送請求至伺服器
伺服器啟動並調用Servlet,Servlet根據用戶端請求產生響應內容並將其傳給伺服器
伺服器將響應返回用戶端