1. 程式人生 > >servlet是什麼?工作原理以及生命週期

servlet是什麼?工作原理以及生命週期

1、你對servlet的理解?或者servlet是什麼?
    1)servlet介面定義的是一套處理網路請求的規範,所有實現servlet的類,都需要實現它那五個方法,其中最主要的是兩個生命週期方法 init()初始化和destroy()銷燬,還有一個處理請求的service()可以重寫service方法完成對get和post請求的響應,以及HttpServlet 重寫doGet和doPost方法。
    2)Servlet沒有主方法沒有入口,所以必須存放在一個web容器中——這個容器就是一個WEB伺服器,比如tomcat。
    3)把Servlet放到tomcat中以後,tomcat就是是與客戶端直接打交道的傢伙,他監聽了埠;HttpServletRequest請求過來後,根據url等資訊,確定要將請求交給哪個servlet去處理,然後呼叫那個servlet的service方法去處理;至於具體是get請求還是post請求它裡面自己去判斷;但是最終還是呼叫doGet()方法;方法返回一個HttpServletResponse物件,tomcat再把這個物件返回給客戶端。

2、servlet的工作原理與生命週期?
    1)工作原理:
        ①Servlet接收和響應客戶請求的過程,首先客戶傳送一個請求,Servlet是呼叫service()方法對請求進行響應的,service()方法中對請求的方式進行了匹配,選擇呼叫doGet,doPost等這些方法,然後再進入對應的方法中呼叫邏輯層的方法,實現對客戶的響應。我們每次定義一個Servlet的時候,都必須實現doGet或doPost等這些方法。
        ②Servlet沒有主方法,不能夠獨立的執行,它的執行需要容器的支援,Tomcat是最常用的JSP/Servlet容器。Servlet執行在Servlet容器中,並由容器管理從建立到銷燬的整個過程。這時就有了Servlet的生命週期。
    2)生命週期:
        ①Servlet生命週期分為四個部分:1.載入和例項化 ->2.初始化 - > 3.請求處理 -> 4.銷燬
        ②Servlet中三個方法涉及到Servlet的生命週期,分別是init(),service(),destroy()方法。
        ③具體實現:
            1.載入和例項化:當檢測到需要Servlet的第一個請求時,讀取xml檔案找到要載入的servlet類,建立Servlet例項。?載入一般是在執行tomcat容器時來完成,將servlet類載入到tomcat中,或者是客戶端發來請求時也可以
            2.初始化:也就是init()方法--->初始化資訊一般是讀取配置資訊、讀取初始化引數等,對於每一個servlet例項,inin()方法值被呼叫一次。就是在使用者第一次請求到來的時候執行,如果不配置load-on-startup;那麼該servlet會在請求第一次到來初始化。如果配置了初始化的相關操作【load-on-startup】會在伺服器啟動時候執行;如果設定了多個那麼servlet加    載的優先順序設定的值越小優先順序越高。
            3.請求處理:也就是service()方法--->呼叫Servlet的service()方法對請求進行處理,在呼叫該方法之前,init()方法必須先成功執行。每次請求到來都會執行,並且在init()方法之後執行。可以不用重寫這個方法,因為父類已經很好的實現了service()方法;會自動根據提交方式的不同調用以之對應的doGet()或者duPost()方法。
            4.銷燬:也就是destroy()方法--->作用回收關閉相關資源;在更新程式碼時候執行。整個Servlet的生命週期結束。一般tomcat關閉,servlet就會被銷燬。