初學者對Servlet、JSP及Web容器之間關係的理解
阿新 • • 發佈:2019-02-04
Servlet
就是一個Java程式,一個Servlet
應用程式經常包含一個或者多個Servlet
也就是當用戶傳送請求,例如提交表單,那麼需要一個或多個Servlet
協同作用,而訪問的jsp
頁面也是一個Servlet
。當每次我們傳送請求時,Servlet
應用程式中的service()
方法就會被觸發執行一次。當初次訪問一個Servlet
時,init()
方法會觸發執行一次,之後的請求都是執行service()
方法。
如果你覺得奇怪,為什麼沒看到過service()
這個方法,那是因為我們一般用的是通過繼承HttpServlet
來實現Servlet
,而在HttpServlet
中一般的請求我們只要@override
doGet()
和doPost()
方法即可實現我們對請求的處理。而HttpServlet
中的service()
方法會根據請求的型別呼叫對應的doGet()
、doPost()
等等方法,所以只要實現doGet()
和doPost()
方法等等即可。
為什麼說jsp
也是一個Servlet
呢,那是因為當我們使用Servlet/JSP
容器時,例如最常用的Tomcat
會將jsp
檔案轉化成相應的一個Servlet
程式,jsp
頁面的主體就轉化成相應程式碼位於service()
方法當中。jsp
技術只是將開發變得簡單,然而基本原理還是不變的,實現及其複雜的Servlet
就由Tomcat
這一類的容器來實現,我們只要實現jsp
訪問Servlet
只需為地址新增對映到Servlet
類即可或者是@WebServlet
註解實現。
Servlet
是一個介面,含有五個方法:
init
。僅在第一次訪問Servlet時呼叫,之後不再呼叫。service
。每次請求Servlet時,Servlet容器都會呼叫這個方法。第一次呼叫init,之後呼叫service。這裡編寫Servlet要實現的處理程式碼。destroy
。銷燬Servlet時,Servlet容器就會呼叫這個方法。getServletInfo
……getServletConfig
……