1. 程式人生 > >javaWeb_Servlet_Servlet基礎_Servlet配置以及Servlet生命周期

javaWeb_Servlet_Servlet基礎_Servlet配置以及Servlet生命周期

實例 調用 tom pin 節點 tomcat服務器 servlet引擎 參數 mapping


Servlet基礎_Servlet配置以及Servlet生命周期

1.servlet方法和一般的java方法不同之處

(1).現象
我們看見一個顯現,啟動tomcat服務器的時候,我們所調用的這一個Servlet方法已經被執行了,並打出了要輸出的部分信息。我們之前是
自己啟動,自己創建實例,自己調用方法,字節結束方法,但是servlet就自己調用了方法,其實這是服務器執行的,因為Servlet是運行在
服務器端的應用程序,Servlet容器會幫我們創建Servlet實例,調用Servlet方法,在結束的時候會調用銷毀方法。


(2).Servlet容器做的操作
A:創建Servlet實例,並調用Servlet的相關生命周期方法。(即先init()-->Service()--->destory())
B:如jsp,Filter,listener,Tag等運行在Servlet容器中的都受到Servlet容器管理。

2.Servlet相關的生命周期方法

(1).構造器:第一次請求servlet的時候,只會被調用一次,創建Servlet的實例,調用構造器。同時也說明Servlet是單實例的。(這一個時候就
存在線程安全的問題也就是說不提倡使用全局變量在Servlet裏面)。

(2).init():只會被調用一次,也即是創建好實例以後會被調用,用於初始化當前的Servlet,註意:是可傳遞參數的初始化,一般就是配置信息。

(3).Service():會被多次調用,這個就是用於響應請求的。

(4).destory():只會被調用一次,在當前的servlet所在的web被卸載調用之前會被調用,用於釋放servlet占用的資源。

註意:以上的方法都是被servlet容器所調用。



3.特殊的參數:load-on-startup

(1).作用:指定該servlet在容器中被創建的時機。配置在servlet的節點中。參數如果為負數,那麽會被第一次請求的時候被創建實例,
如果不為負數,那麽會被servlet容器加載的時候創建實例,且數據值越小越早被創建。

(2).實例:

<servlet>
<servlet-name>Manager</servlet-name>
<servlet-class>com.action.Manager</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>

4.servlet容器響應servlet請求的過程

(1).Servlet引擎檢查是否已經裝載並創建了該Servlet的實例對象。如果是,則直接執行(4),否則執行(2)
(2).裝載並創建該Servlet的一個實例對象:調用該Servlet的構造器。
(3).調用Servlet實例對象的init()方法。
(4).創建一個用於封裝請求的ServletRequest對象和一個代表響應消息的ServletResponse對象,然後調用
Servlet的service()方法並將請求和響應對象作為參數傳遞進去。
(5).WEB應用程序被停止請求和重新啟動之前,Servlet引擎將卸載Servlet,並在卸載之前調用Servlet的
destory()方法。


5.Servlet的註冊以及Servlet的運行

(1).Servlet程序必須通過Servlet容器來啟動運行,並且存儲目錄需要有特殊要求,通常
需要存儲在<WEB應用程序目錄>\WEB-INF\classes\目錄中。

(2).Servlet程序必須在WEB應用程序的web.xml文件中進行註冊和映射其訪問路徑,才可以被Servlet引擎記載和被外界訪問。

(3).servlet的註冊和映射

A:註冊
一個Servlet元素用於註冊一個Servlet,它包含倆個主要的子元素:<servlet-name>和<servlet-class>,分別用於設置Servlet的註冊名稱,
和Servlet的完整類名。

B:映射
一個<servlet-mapping>元素用於映射一個已註冊的Servlet的一個對外訪問路徑,它包含倆個子元素:<servlet-name>和<url-pattern>
分別用於指定Servlet的註冊名稱和Servlet的對外訪問路徑。

javaWeb_Servlet_Servlet基礎_Servlet配置以及Servlet生命周期