七 servlet工作原理

在開始解釋servlet是如何工作之前,讓我們瞭解三個術語。

Web Server: 它可以處理客戶端發送的請求,使用Http Response響應該請求。

Web Application(webapp): 在本質南中,我將其稱之爲webapp,基本上這個工程就是你的web應用,是servlet的集合。

Web Container: 也被稱爲Servlet容器或者Servlet引擎。它是Web Server的一部分,與servlet交互。是管理servlet生命週期的Web Server主要組劍。

 

你將發現此指導中的一部分早已經在servlet lift cycle 指導中了。然而,本知道聚焦於servlet應用(webapp)的工作原理而不是它的生命週期。我強烈建議你讀此知道來了解servlet到底如何工作的。

 

Servlet如何工作的?

1) 當web服務器(例如tomcat)開啓,servlet容器部署並裝載所有的servlet。在這一步,Servlet容器創建ServletContent對象。ServletContext對象是一個接口,定義了很多與servlet容器交互的方法。

 

注意:

在每個webapp中只有一個ServletContext,它對於所有的servletl是公用的。ServletContext有幾個有用的方法,例如addListener(),addFilter()等。現在我不解釋這些方法,在接下來的關於ServletContext獨立章節再詳細闡述它們。

 

2) 一旦servlet被載入,servlet容器創建這些servlet類的實例。對於每個servlet,它的init()方法被調用。

 

3) 客戶端(用戶的瀏覽器)發送Http請求到web server通過某個端口。web server每受到一個請求,servlet容器創建HttpServletRequest 和 HttpServletResponse 對象。HttpServletREquest對象提供了對請求信息的訪問,HttpServletResponse對象允許我們在將http響應發送到客戶機之前對其進行格式化和更改

 

對於每一個客戶端請求servlet容器生成一個新的線程調用service()方法。service()方法分發基於請求類性分發請求到對應的請求方法上。

 

例如,如果服務器接收到一個Get請求,service()通過調用doGet()方法分發該請求到doGet()方法上。Post,Head,Put等請求也是類似這樣通過service()方法分發到對應的doPost(),doHead(),doPut()方法上。

[image]()

 

 

4) 當servlet容器關閉,卸載所有的servlet並調用每個被初始化的servlet的destory()方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章