Tomcat架構詳解(三) Request和Response處理的全過程

從Tomcat源碼分析(二)可知,用戶的一個請求會經過n個環節的處理,最後到達開發人員寫的Servlet,傳給Servlet也就是HttpServletRequest和HttpServletResponse,因此可以認爲這一路走下來無非就是把最原始的Socket包裝成Servlet裏用到的HttpServletRequest和HttpServletResponse,只不過每個環節完成的包裝功能和部分不一樣而已,信息流如下圖所示:

其中,Request與Response的類圖如下所示:

org.apache.coyote.Request和org.apache.coyote.Response是Tomcat內部使用的,不提供給開發者調用,類是final類型的。下面結合一次完整請求的時序圖來看看從Socket到org.apache.catalina.connector.Request的加工過程:

由上圖可見,Request的解析和加工過程不是在一個方法裏搞定,而是信息流動過程中逐步解析的,不同層次的處理器解析不同層次的信息,在解析過程同時做了些判斷和攔截的工作,比如當發現是要訪問WEB-INF的資源,會直接返回錯誤給客戶端等等。

發佈了90 篇原創文章 · 獲贊 19 · 訪問量 29萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章