JAVA學習之 淺析Servlet
一、什麼是Servlet
Servlet是一種在伺服器端執行的java編寫的程式,是按照Servlet規範編寫的一個java類。
二、Servlet的工作過程
如圖所示:為了實現客戶與伺服器端的動態互動,需要一個遵循HTTP協議的伺服器端應用軟體,來處理客戶的各種請求,並將結果傳送給客戶端。
三、Servlet的生命週期
Servlet的生命週期是由Servlet的容器(例如:tomcat)來控制的;生命後期分為載入類及建立例項;初始化;服務;銷燬
1、載入類及建立例項
在預設情況下,Servlet例項是在第一個請求到來的時候建立,即輸入url
2、初始化
一旦Servlet例項被建立,web伺服器會自動呼叫init(ServletConfig config)方法來初始化該Servlet,其中方法引數config中包含了Servlet的配置資訊;下面說一下該如何配置Servlet的初始化引數:
在web.xml中該Servlet的定義標記中,比如:
<servlet> <servlet-name>TestServlet</servlet-name> <servlet-class>com.tgb.Test.TestServlet</servlet-class> <init-param> <param-name>encoding</param-name> <param-value>GB18030</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/servlet/TestServlet</url-pattern> </servlet-mapping>
<servlet-name>:sevlet物件的名稱。
<servlet-class>:建立servlet物件需要載入的類
<init-param>:初始化
<param-name>:引數名稱
<param-value>:引數值
<load-on-startup>:建立servlet物件的時機以及順序
<servlet-mapping><servlet-name>要與
<servlet><servlet-name>名稱一致。
<url-pattern>:客戶端訪問url地址。
3、服務
初始化成功後,該Servlet例項就可以被伺服器用來服務客戶端提出的請求並響應,在服務階段伺服器會呼叫該例項的Service(ServletRequest request, ServletResponse response)方法,兩個引數由伺服器建立並傳給Servlet例項。其中request物件封裝了客戶端發往伺服器端的資訊,response物件則封裝了伺服器發往客戶端的資訊。
4、銷燬
當web應用被終止時,Servlet容器會先呼叫Servlet物件的destrory()方法,然後再銷燬Servlet物件,同時也會銷燬與Servlet物件相關聯的ServletConfig物件。我們可以在destroy方法的實現中釋放Servlet所佔用的資源。
需要注意的是,Servlet的生命週期中,Servlet的初始化和銷燬階段值會發生一次,而Service方法執行的次數則取決於客戶端訪問的次數。
四、Servlet的執行緒安全問題
Servlet是單例項多執行緒的,如果存在可以修改的成員變數將會出現執行緒安全問題。
使用Servlet最好保證Servlet是無狀態的,也就是沒有可以修改的成員變數。
總結:現在的感覺是,Servlet用起來很簡單,但是讓我很清楚的描述什麼是Servlet,和Servlet的原理還有些困難,這篇部落格說明了Servlet一些簡單的原理,希望會對以後使用Servlet有很好額幫助。