1. 程式人生 > >關於servlet的理解(1)

關於servlet的理解(1)


首先在java中 都是由javax.servlet.Servlet這個介面所實現 其中genericServlet介面類似介面卡可使繼承這一介面的類不必實現全部的方法(不過這兩個都是與協議無關)
HttpServlet是基於http的servlet類 大部分自定義的servlet都需繼承此類

而對於servlet 主要是部署的步驟麻煩 對於不同的web伺服器有不同的部署方法 而總體來說都是將其放入一個servlet容器中
對於tomcat 將其放入專案的classes中 並需配置web.xml(主要包含以下幾項servlet中的sevlet-name (取名) sevlet-class(讓tomcat找到類) servelt-mapping中 sevlet-name確定名字 url-pattern路徑)
注意的一點是當執行時務必在路徑前加入你專案的名稱/**/url

客戶端傳送請求至
伺服器
端;

  伺服器將請求資訊傳送至Servlet

  Servlet生成響應內容並將其傳給Server。響應內容動態生成,通常取決於客戶端的請求

  伺服器將響應返回給客戶端

   Servlet看起來像是通常的Java程式。Servlet匯入特定的屬於Java Servlet API的包。因為是物件位元組碼,可動態地從網路載入,可以說Servlet對Server就如同Applet對Client一樣,但是,由於 Servlet運行於Server中,它們並不需要一個圖形使用者介面。從這個角度講,Servlet也被稱為Faceless Object。

  JAVA Servlet的優勢:

  Servlet可以和其他資源(檔案、資料庫、Applet、Java應用程式等)互動,以生成返回給客戶端的響應內容。如果需要,還可以儲存請求-響應過程中的資訊。

  採用Servlet,伺服器可以完全授權對本地資源的訪問(如資料庫),並且Servlet自身將會控制外部使用者的訪問數量及訪問性質

  Servlet可以是其它服務的客戶端程式,例如,它們可以用於分散式的應用系統中,可以從本地
硬碟
,或者通過網路從遠端硬碟啟用Servlet。

  Servlet可被連結(chain)。一個Servlet可以呼叫另一個或一系列Servlet,即成為它的客戶端。

  採用Servlet Tag技術,可以在HTML頁面中動態呼叫Servlet。

  Servlet API與協議無關。它並不對傳遞它的協議有任何假設。

  像所有的Java程式一樣,Servlet擁有面向物件Java語言的所有優勢

  Servlet提供了Java應用程式的所有優勢——可移植、穩健、易開發。使用Servlet 的Tag技術,Servlet能夠生成嵌於靜態HTML頁面中的動態內容。

  一個Servlet被客戶端傳送的第一個請求啟用,然後它將繼續運行於後臺,等待以後的請求。每個請求將生成一個新的執行緒,而不是一個完整的程序。多個客戶能夠在同一個程序中同時得到服務。一般來說,Servlet程序只是在Web Server解除安裝時被解除安裝。

  Servlet生命週期:

  裝載Servlet。這項操作一般是動態執行的。然而,Server通常會提供一個管理的選項,用於在Server啟動時強制裝載和初始化特定的Servlet。

  Server建立一個Servlet的例項

  Server呼叫Servlet的init()方法

  一個客戶端的請求到達Server

  Server建立一個請求物件

  Server建立一個響應物件

  Server啟用Servlet的service()方法,傳遞請求和響應物件作為引數

  service()方法獲得關於請求物件的資訊,處理請求,訪問其他資源,獲得需要的資訊

  service()方法使用響應物件的方法,將響應傳回Server,最終到達客戶端。service()方法可能啟用其它方法以處理請求,如doGet()或doPost()或程式設計師自己開發的新的方法

   對於更多的客戶端請求,Server建立新的請求和響應物件,仍然啟用此Servlet的service()方法,將這兩個物件作為引數傳遞給它。如此 重複以上的迴圈,但無需再次呼叫init()方法。一般Servlet只初始化一次 ,當Server不再需要Servlet時(一般當Server關閉時),Server呼叫Servlet的Destroy()方法。