一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

云服務器|WEB服務器|FTP服務器|郵件服務器|虛擬主機|服務器安全|DNS服務器|服務器知識|Nginx|IIS|Tomcat|

服務器之家 - 服務器技術 - Tomcat - tomcat中Servlet的工作機制詳細介紹

tomcat中Servlet的工作機制詳細介紹

2021-08-17 16:50wangyangzhizhou Tomcat

這篇文章主要介紹了tomcat中Servlet的工作機制詳細介紹的相關資料,需要的朋友可以參考下

tomcat中servlet的工作機制

在研究servlet在tomcat中的工作機制前必須先看看servlet規范的一些重要的相關規定,規范提供了一個servlet接口,接口中包含的重要方法是init、service、destroy等方法,servlet在初始化時要調用init方法,在銷毀時要調用destroy方法,而對客戶端請求處理時則調用service方法。對于這些機制的支持都必須由tomcat內部去支持,具體則是由wrapper容器提供支持。

在tomcat中消息流的流轉機制是通過四個不同級別的容器管道機制進行流轉的,對于每個請求都是一層一層處理的。如下圖,當客戶端請求到達服務端后請求被抽象成request對象后向四個容器進行傳遞,首先經過engine容器的管道通過若干閥門,最后通過standardenginevalve閥門流轉到host容器的管道,處理后繼續往下流轉,通過standardhostvalve閥門流轉到context容器的管道,繼續往下流轉,通過standardcontextvalve閥門流轉到wrapper容器的管道,而對servlet的核心處理也正是在standardwrappervalve閥門中。standardwrappervalve閥門調用servlet的service方法隊請求進行處理,然后對客戶端響應。

tomcat中Servlet的工作機制詳細介紹

下面更深入了解下standardwrappervalve閥門調用servlet的過程。

web應用的servlet類都是根據servlet接口,例如一般我們在寫業務處理servlet類時都會繼承httpservlet類,為了遵循servlet規范,它其實最終也是實現了servlet接口,只是httpservlet定義了http協議的servlet,將協議共性的東西抽離出來復用。servlet處理客戶端請求的核心方法為service方法,所以對于httpservlet來說,它需要針對http協議的get、post、pu、delete、head、options、trace等請求方法做出不同的分發處理,為方便理解,下面用個簡化的代碼展示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public abstract class httpservlet extends servlet{
  public void service(servletrequest req, servletresponse res) throws servletexception, ioexception {
    httpservletrequest request = (httpservletrequest) req;
    httpservletresponse response = (httpservletresponse) res;
    string method = req.getmethod();
    if (method.equals("get")) {
      doget(request, response);
    }else if (method.equals("post")) {
      dopost(request, response);
    }else if (method.equals("head")) {
      dohead(request, response);
    }
  }
protected void dohead(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception{}
protected void doget(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception{}
protected void dopost(httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception {}
}

service方法將請求對象和響應對象轉換成httpservletrequest和httpservletresponse,然后獲取請求方法,根據請求方法調用不同的處理方法,例如如果為get方法則調用doget方法,那么在繼承了httpservlet類的servlet只需重寫doget或dopost方法完成業務邏輯處理,這就是我們熟悉的servlet了。

這樣一來,standardwrappervalve閥門調用servlet的工作其實就是通過反射機制實現對servlet對象的控制,例如在不配置load-on-startup情況下,客戶端首次訪問該servlet時由于還不存在該servlet對象,需要通過反射機制實例化出該servlet對象,并且調用初始化方法,所以這也是為什么第一次訪問某個servlet時會比較耗時的原因,后面客戶端再對該servlet訪問時都會使用該servlet對象,無需再做實例化和初始化操作。有了servlet對象后調用其service方法即完成了對客戶端請求的處理。

實際上通過反射機制實例化servlet對象是一個比較復雜的過程,它除了完成實例化和初始化工作外還要解析該servlet類包含的各種注解并作處理,另外,對于實現了singlethreadmodel接口的servlet類,它還要維護一個該servlet對象池。

綜上所述,servlet工作機制大致流程是:request -> standardenginevalve -> standardhostvalve -> standardcontextvalve -> standardwrappervalve -> 實例化并初始化servlet對象 -> 調用該servlet對象的service方法 -> response。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/wangyangzhizhou/article/details/52273676

延伸 · 閱讀

精彩推薦
  • Tomcattomcat 6.0.20在一個機器上安裝多個服務的方法

    tomcat 6.0.20在一個機器上安裝多個服務的方法

    本文主要為大家介紹tomcat 6.0.20在一個機器上安裝多個服務的方法,當前前提是你已經可以同時運行他們了,他們的端口不能相同,這里只是解釋如何把它們...

    Tomcat教程網10052021-08-03
  • Tomcat如何將Tomcat設置為自動啟動的服務最快捷方法

    如何將Tomcat設置為自動啟動的服務最快捷方法

    這篇文章主要介紹了如何將Tomcat設置為自動啟動的服務最快捷方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    鋒齊葉落5352021-09-03
  • TomcatTomcat正常訪問localhost報404問題解決

    Tomcat正常訪問localhost報404問題解決

    這篇文章主要介紹了Tomcat正常訪問localhost報404問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友...

    小明Style5592021-09-23
  • Tomcat淺談Tomcat多層容器的設計

    淺談Tomcat多層容器的設計

    Tomcat的容器用來裝載Servlet。那Tomcat的Servlet容器是如何設計的呢,本文就詳細的來介紹一下,具有一定的參考價值,感興趣的可以了解一下...

    JavaEdge.9612021-09-26
  • Tomcat如何查看tomcat的控制臺輸出的方法

    如何查看tomcat的控制臺輸出的方法

    這篇文章主要介紹了如何查看tomcat的控制臺輸出的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    CaiCaiNeo11972021-08-29
  • TomcatTomcat目錄結構詳解

    Tomcat目錄結構詳解

    Tomcat 服務器是一個免費的開放源代碼的 Web 應用服務器,學習tomcat目錄結構十分有必要,今天小編給大家帶來了詳細教程,感興趣的朋友一起看看吧...

    ThinkWon6712021-09-09
  • Tomcat學習javaweb如何配置Tomcat的熱啟動

    學習javaweb如何配置Tomcat的熱啟動

    學習javaweb的時候每次更改項目都需要重新部署項目,如此一來比較麻煩,使用tomcat的熱啟動就可以解決這個問題...

    whsnow12072021-08-04
  • TomcatTomcat服務器搭建教程

    Tomcat服務器搭建教程

    這篇文章主要為大家詳細介紹了Tomcat服務器搭建教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Watom_66310452021-08-20
主站蜘蛛池模板: 91成人啪国产啪永久地址 | 白丝美女用胸伺候主人 | 92国产福利久久青青草原 | 色橹橹 | 国产国语videosex另类 | 天堂网在线.www天堂在线视频 | 免费一级片在线观看 | 精品久久久久久国产 | 日本护士撒尿xxxx欧美 | 国产精品久久久久毛片 | 日韩欧美推理片免费在线播放 | 学校女性奴sm训练调教 | 蝴蝶传媒免费安装 | 青青在线视频观看 | 国产成人精品视频一区 | 精品国产视频 | 精品淑女少妇AV久久免费 | 天天舔天天操天天干 | 精品一区二区三区 不卡高清 | 国产一区二区精品 | 色噜噜视频影院 | 国产精品久久久久久久久免费观看 | 韩国三级动漫 | 好大好硬好湿好紧h | 热巴在公交车h文 | 日韩亚洲人成网站在线播放 | 免费一级生活片 | 好大好爽好硬我要喷水了 | 高清麻生希在线 | 日你逼 | japanesemoms乱熟| 好猛好紧好硬使劲好大刺激视频 | 日韩拍拍拍 | 国产丰满美女做爰 | 农夫色综合 | 国产资源免费 | 67194最新网址| 天天色一色| 全程粗语对白视频videos | 天天看黄| 福利片福利一区二区三区 |