【Java 基礎】--HttpServlet詳解

ZeroWM發表於2015-11-22


Servlet簡介

  Servlet的框架由兩個java包組成:javax.servlet和javax.servlet.http在javax.servlet包中定義了所有的Servlet類都必須實現或擴充套件的的通用介面和類,在javax.servlet.http包中定義了採用HTTP通訊協議的HttpServlet類。

  Servlet的框架核心是javax.servlet.Servlet介面,所有的Servlet必須實現這一介面。在Servlet介面中定義了5個方法,其中3個方法代表了Servlet的宣告週期。

  Init方法--負責初始化servlet物件。

  Service方法--負責響應客戶的請求。

  Destroy方法--當Servlet物件退出宣告週期時,負責釋放佔有的資源。


為什麼要使用Servlet?

  Servlet用來解析http協議,並把解析的結果請求資料庫驗證後,返回資訊給前臺jsp或者html頁面。

  Servlet就像橋樑,跟控制器作用類似。

 

下面就是一個Servlet的使用者驗證的小例子:

1.      伺服器拿到客戶端傳過來的資料,解析http協議,獲取html傳送過來的使用者名稱和密碼

2.      請求資料庫驗證,使用者名稱和密碼

3.      返回結果給前臺html頁面

 


Servlet呼叫過程


  

  我們結合例項來講解一下Servlet呼叫流程:

  1.      web客戶端傳送http協議,request(使用者名稱,密碼)請求到tomcat。

  2.       tomcat有服務在這等著,首先訪問的是web.xml

  <servlet-mapping>結點,提供了兩個標籤資訊<servlet-name>和<url-pattern>。

  servlet-name:自己定義的servlet名稱

  url-pattern: servlet的URL路徑,相對於web應用程式上下文根路徑。

(根路徑就是

test_servlet

           WEB-INF

                    classes(存放編譯檔案)

                    lib(存放第三方的jar包,資料驅動等等)

                    web.xml   (存放servlet配置資訊)



  通過url-pattern提供的路徑可以找到Servlet,每個<url-pattern>對應一個<servlet-name>,根據<servlet-name>可以找到該路徑對應的類<servlet-class>.

 

3.       找到servlet-class, tomcat就可以拿到servlet對它進行例項化,例項化成普通的java物件。

servlet和普通的類的區別是宣告週期由tomcat容器管理。


4.       首先呼叫Servlet裡面的service方法,判斷請求模式:doGet還是doPost



如果選擇doGet方法

 

  HttpServletRequest包裝了客戶端的相關資訊,包括了表單資訊。

  如果呼叫完成之後,驗證完成,呼叫資料庫就返回。告訴客戶端這次驗證是對還是錯。

輸出html給瀏覽器。HttpServletResponse,這個物件可以做響應的,通過這個物件可以把資料寫給瀏覽器。getWriter拿到字元流,println列印到瀏覽器上。


總結

  現在才知道,之前的學.net MVC中的Controller裡面拼接前臺html字串是怎麼來的,Java裡面的Servlet已經給出我們答案了!



相關文章