1. 程式人生 > >servlet工作原理、生命週期

servlet工作原理、生命週期



servlet:用Java編寫的伺服器端程式。其主要功能在於互動式地瀏覽和修改資料,生成動態Web內容。

servlet語法:包宣告;包匯入()繼承父類HttpServlet複寫doPost()或者doGet()

Class servletTest extendsHttpServlet(HttpServletRequest req, HttpServletResponse resp)-----req中儲存的是request內建物件的地址,resp中儲存的是response內建物件的地址。

包匯入:javax.servlet.http.*; javax.servlet.*(例如:繼承

Servlet時候可能出現ServletException異常) java.io.IOException

生命週期如果web.xml中配置了<load-on-startup>,servlet將在tomcat啟動時就建立,如果沒有,將在servlet第一次被訪問時建立;在一建立servlet時就會呼叫init();而在init方法中接收了ServletConfig介面型別的config物件。 doPost(); doGet(); destroy()tomcat關閉,servlet銷燬】

簡述為:Servlet生命週期分為三個階段:

  1,初始化階段  呼叫init()方法

  2,響應客戶請求階段  呼叫service()方法

  3,終止階段  呼叫destroy()方法

servlet最大的特點就是CGI,CGI—通用閘道器介面:瀏覽器一向伺服器傳送請求,就建立了request物件,此時自動將request物件注入到了tomcatservlet元件

工作原理:

Servlet初始化階段:

       tomcat啟動,在下列時刻Servlet容器裝載Servlet:

    1,Servlet容器啟動時自動裝載某些Servlet,實現它只需要在web.XML檔案中的<Servlet></Servlet>之間新增如下程式碼:

    2,在Servlet容器啟動後,客戶首次向Servlet傳送請求

    3,Servlet類檔案被更新後,重新裝載Servlet

Servlet被裝載後,Servlet容器建立一個Servlet例項並且呼叫Servlet的init()方法進行初始化。在Servlet的整個生命週期內,init()方法只被呼叫一次。

Servlet相應階段:

        客戶開始傳送一個請求,Servlet呼叫service()方法對請求進行響應的,通過原始碼可見,service()方法中對請求的方式進行了匹配,選擇呼叫doGet,doPost等這些方法,然後再進入對應的方法中呼叫邏輯層的方法,進行相應的業務處理,期間包括建立業務物件、呼叫業務方法、訪問資料庫、儲存資料等等操作,業務處理完了,根據轉向資訊資訊進行轉向,這樣實現對客戶的響應。

Servlet終止階段:

  當WEB應用被終止,或Servlet容器終止執行,或Servlet容器重新裝載Servlet新例項時,Servlet容器會先呼叫Servlet的destroy()方法,在destroy()方法中可以釋放掉Servlet所佔用的資源

Servlet與JSP的比較:

  有許多相似之處,都可以生成動態網頁。

  JSP的優點是擅長於網頁製作,生成動態頁面比較直觀,缺點是不容易跟蹤與排錯。

  Servlet是純Java語言,擅長於處理流程和業務邏輯,缺點是生成動態網頁不直觀