最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

tomcat中Servlet的工作機制詳細(xì)介紹

 更新時間:2016年12月31日 11:43:07   投稿:lqh  
這篇文章主要介紹了tomcat中Servlet的工作機制詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下

tomcat中Servlet的工作機制

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

在tomcat中消息流的流轉(zhuǎn)機制是通過四個不同級別的容器管道機制進行流轉(zhuǎn)的,對于每個請求都是一層一層處理的。如下圖,當(dāng)客戶端請求到達服務(wù)端后請求被抽象成request對象后向四個容器進行傳遞,首先經(jīng)過Engine容器的管道通過若干閥門,最后通過StandardEngineValve閥門流轉(zhuǎn)到Host容器的管道,處理后繼續(xù)往下流轉(zhuǎn),通過StandardHostValve閥門流轉(zhuǎn)到Context容器的管道,繼續(xù)往下流轉(zhuǎn),通過StandardContextValve閥門流轉(zhuǎn)到Wrapper容器的管道,而對Servlet的核心處理也正是在StandardWrapperValve閥門中。StandardWrapperValve閥門調(diào)用Servlet的service方法隊請求進行處理,然后對客戶端響應(yīng)。

下面更深入了解下StandardWrapperValve閥門調(diào)用Servlet的過程。

web應(yīng)用的Servlet類都是根據(jù)Servlet接口,例如一般我們在寫業(yè)務(wù)處理Servlet類時都會繼承HttpServlet類,為了遵循Servlet規(guī)范,它其實最終也是實現(xiàn)了Servlet接口,只是HttpServlet定義了HTTP協(xié)議的Servlet,將協(xié)議共性的東西抽離出來復(fù)用。Servlet處理客戶端請求的核心方法為service方法,所以對于HttpServlet來說,它需要針對http協(xié)議的GET、POST、PU、DELETE、HEAD、OPTIONS、TRACE等請求方法做出不同的分發(fā)處理,為方便理解,下面用個簡化的代碼展示:

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方法將請求對象和響應(yīng)對象轉(zhuǎn)換成HttpServletRequest和HttpServletResponse,然后獲取請求方法,根據(jù)請求方法調(diào)用不同的處理方法,例如如果為GET方法則調(diào)用doGet方法,那么在繼承了HttpServlet類的Servlet只需重寫doGet或doPost方法完成業(yè)務(wù)邏輯處理,這就是我們熟悉的Servlet了。

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

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

綜上所述,Servlet工作機制大致流程是:request -> StandardEngineValve -> StandardHostValve -> StandardContextValve -> StandardWrapperValve -> 實例化并初始化Servlet對象 -> 調(diào)用該Servlet對象的service方法 -> response。

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

相關(guān)文章

  • tomcat配置虛擬路徑的實現(xiàn)步驟

    tomcat配置虛擬路徑的實現(xiàn)步驟

    本文主要介紹了tomcat配置虛擬路徑的實現(xiàn)步驟,主要是在localhost文件中進行配置,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • IDEA2022創(chuàng)建Web項目配置Tomcat的詳細(xì)圖文說明

    IDEA2022創(chuàng)建Web項目配置Tomcat的詳細(xì)圖文說明

    因為學(xué)習(xí)JavaEE需要配置Tomcat,所以抽出時間對IDEA進行配置與創(chuàng)建,下面這篇文章主要給大家介紹了關(guān)于IDEA2022創(chuàng)建Web項目配置Tomcat的詳細(xì)圖文說明,需要的朋友可以參考下
    2023-04-04
  • Linux小技巧分享之如何重新啟動tomcat

    Linux小技巧分享之如何重新啟動tomcat

    在Linux系統(tǒng)下,如何重啟Tomcat呢?答曰:使用命令操作的!咳咳,這不是廢話嗎。其實tomcat的安裝目錄有關(guān)閉,重啟的腳本的,只要執(zhí)行他們就可以了,下面我們來詳細(xì)說明下
    2014-08-08
  • eclipse配置Tomcat和Tomcat出現(xiàn)無效端口解決辦法

    eclipse配置Tomcat和Tomcat出現(xiàn)無效端口解決辦法

    本文主要介紹了eclipse配置Tomcat和Tomcat出現(xiàn)無效端口解決辦法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Linux上tomcat的虛擬主機IP映射配置(圖片服務(wù)器)

    Linux上tomcat的虛擬主機IP映射配置(圖片服務(wù)器)

    有時候我們會使用tomcat作為一個圖片資源服務(wù)器,本文主要介紹了Linux上tomcat的虛擬主機IP映射配置,通過tomcat服務(wù)器來訪問我們的圖片,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-08-08
  • 項目啟動tomcat失敗的幾種可能原因和解決方法(小結(jié))

    項目啟動tomcat失敗的幾種可能原因和解決方法(小結(jié))

    本文主要介紹了項目啟動tomcat失敗的幾種可能原因和解決方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 解析Tomcat的啟動腳本--catalina.bat

    解析Tomcat的啟動腳本--catalina.bat

    本文主要對Tomcat的三個最重要的啟動腳本之一--catalina.bat腳本做了詳細(xì)分析,具有很好的參考價值,需要的朋友可以看下
    2016-12-12
  • 詳述 tomcat 中的 server.xml 配置文件示例

    詳述 tomcat 中的 server.xml 配置文件示例

    本文將通過實例,介紹server.xml中各個組件的配置,并詳細(xì)說明 Tomcat 各個核心組件的作用以及各個組件之間的相互關(guān)系。對tomcat server.xml 配置文件相關(guān)知識感興趣的朋友一起看看吧
    2017-08-08
  • 怎么減少本地調(diào)試tomcat重啟次數(shù)你知道嗎

    怎么減少本地調(diào)試tomcat重啟次數(shù)你知道嗎

    這篇文章主要為大家詳細(xì)介紹了怎么減少本地調(diào)試tomcat重啟次數(shù),使用Groovy,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • org.apache.tomcat.util.http.fileupload.IOUtils報錯對應(yīng)jar問題

    org.apache.tomcat.util.http.fileupload.IOUtils報錯對應(yīng)jar問題

    這篇文章主要介紹了org.apache.tomcat.util.http.fileupload.IOUtils報錯對應(yīng)jar問題,通過本文學(xué)習(xí)知道jar位置為tomcat8.0?引入lib下的jar包:tomcat-coyote.jar,文中通過圖例給大家講解需要的朋友可以參考下
    2022-11-11

最新評論

隆子县| 兴山县| 南昌县| 长岭县| 兴国县| 万安县| 宁城县| 綦江县| 长丰县| 运城市| 栾川县| 聊城市| 彭州市| 上思县| 阿尔山市| 东莞市| 阿尔山市| 万山特区| 邻水| 安平县| 饶河县| 息烽县| 禄丰县| 临夏市| 安远县| 靖西县| 澄江县| 南京市| 饶河县| 托里县| 凤台县| 泊头市| 甘肃省| 巴南区| 高安市| 昌吉市| 姚安县| 阳东县| 衡水市| 昭觉县| 连南|