J2EE的13 規範之解讀Servlet

來源:互聯網
上載者:User

標籤:

 

  Servlet 是什嗎?

 

  第一,Servlet是一種規範,由Sun公司制定的伺服器端組件規範。

  第二,Servlet 可以運行在web伺服器或應用伺服器上。

  第三,Servlet由Servlet容器進行管理,可實現諸如“執行個體化並管理Servlet對象”、“調用Servlet生命週期方

法”、“解析及封裝特定協議的請求和響應”等工作。

  第四,作為來自 網頁瀏覽器的請求和 資料庫或應用程式之間的中介層,Servlet可以收集來自網頁的使用者請

求,呈現來自資料庫或者其他源的記錄,可實現動態建立網頁。

 

  

 

    Servlet 架構圖

 

  顯示了 Servlet 在 Web 應用程式中的位置。

                          

  Servlet生命週期

 

  Servlet 生命週期可定義為其從建立直到銷毀的整個過程。當使用者調用一個 Servlet 時,就會建立一個 Servlet

執行個體,每一個使用者請求都會產生一個新的線程。

  以上是 Servlet 生命週期遵循的過程。

  •  通過調用init ()方法進行初始化。
  •  調用service()方法來處理用戶端的請求。
  •  通過調用destroy()方法終止(結束)。
  •  最後,Servlet 是由 JVM 的記憶體回收行程進行記憶體回收的。

  現在讓我們詳細討論生命週期的方法。

 

  Servlet 方法解讀

 

  init() 方法

  init 方法被設計成只調用一次。它在第一次建立 Servlet 時被調用,在後續每次使用者請求時不再調用。因此,它

是用於一次性初始化,init() 方法簡單地建立或載入一些資料,這些資料將被用於 Servlet 的整個生命週期。

  init 方法的定義如下:

  

<span style="font-family:SimSun;">public void init() throws ServletException {  // 初始化代碼…  }</span>

      

    service() 方法

  service() 方法是執行實際任務的主要方法。Servlet 容器調用 service() 方法來處理來自用戶端(瀏覽

器)的請求,並把格式化的響應寫回給用戶端。

  每次伺服器接收到一個 Servlet 請求時,伺服器會產生一個新的線程並調用服務。service() 方法檢查 HTTP

請求類型(GET、POST、PUT、DELETE 等),並在適當的時候調用 doGet、doPost、doPut,doDelete 等方法。

  方法定義:

<span style="font-family:SimSun;"><span style="font-size:18px;">public void service(ServletRequest request,ServletResponse response)       throws ServletException, IOException{}</span></span>

  service() 方法由容器調用,service 方法在適當的時候調用 doGet、doPost、doPut、doDelete 等方法。

所以,我們不用對 service() 方法做任何動作,您只需要根據來自用戶端的請求類型來重載 doGet() 或

doPost() 即可。

 

  

  doGet() 方法

  GET 請求來自於一個 URL 的正常請求,或者一個未指定提交方式 的 HTML 表單,它由 doGet() 方法處理。

  

<span style="font-family:SimSun;"><span style="font-size:18px;">public void doGet(HttpServletRequest request, HttpServletResponse response)    throws ServletException, IOException {    // Servlet 代碼}</span></span>


 

  doPost() 方法

  POST 請求來自於一個特別指定了提交方式為 POST 的 HTML 表單,它由 doPost() 方法處理。

  

<span style="font-family:SimSun;">public void doPost(HttpServletRequest request,HttpServletResponse response)  throws ServletException, IOException {  // Servlet 代碼  }</span>

    

    destroy() 方法

  destroy() 方法只會被調用一次,在 Servlet 生命週期結束時被調用。destroy() 方法可以使 Servlet

關閉資料庫連接、停止後台線程、把 Cookie 列表或點擊計數器寫入到磁碟,並執行其他類似的清理活動。

  在調用 destroy() 方法之後,servlet 對象被標記為記憶體回收。destroy 方法定義如下所示:

  

<span style="font-family:SimSun;">public void destroy() {  // 終止化代碼…  }</span>

  

 

 

 

    初次接觸Servlet,可以把它理解為 .NET 中的Handler,因為他們有著類似的作用:都可用來處理用戶端發送的請

求,讓前台與商務邏輯松耦合,並且實現動態網頁的建立。

  由於認知的不足,只能說先這麼理解。具體是不是這樣還需要實際應用深入瞭解後才能做出判斷。  現在學習新

知識的時候很希望從原先學過的知識中找到一些對應的影子,儘管不是那麼對應,也有可能這麼理解是錯誤的,但是

隨著不斷的深入學習,我們也會自然而然的校正這些偏差,留下更深刻的印象。

 

 

  僅供參考,希望不要誤導大家。

 

J2EE的13 規範之解讀Servlet

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.