挖坑挖了這么長時間也該繼續(xù)填坑了,上文書講到從零開始寫一個Tomcat(貳)--建立動態(tài)服務(wù)器,講了如何讓服務(wù)器解析請求,分離servlet請求和靜態(tài)資源請求,讀取靜態(tài)資源文件輸出或是通過URLClassLoader找到我們請求的servlet,反射生成對應(yīng)的實例,調(diào)用其service方法,傳遞初級解析的request和response,完成請求.

這很tomcat,but too simple

閱讀本文,你將了解

  • 連接器(connector),處理器(processor)邏輯分離
  • 如何高效的解析請求中的header,parameters
  • 生成更加完善的ServletRequest和ServletResponse
  • Tomcat經(jīng)典的facade模式

本章的代碼部分是自己寫的,更多的是從Tomcat源碼上扒下來的

HttpConnector / HttpProcessor

之前的AsServer的主類中實現(xiàn)了所有接收請求,解析request,生成response,調(diào)用ServletProcessor的方法.我們首先將邏輯分離.

HttpConnector只負(fù)責(zé)接收請求,將SocketServer調(diào)用accept方法獲得的socket傳遞給processor實例,本次請求中HttpConnector的工作結(jié)束,接下來的任務(wù)由HttpProcessor繼續(xù)

HttpProcessor總體的邏輯和之前沒有大的變化,基本上就是創(chuàng)建Request,創(chuàng)建Response,解析request,解析header,判斷請求的是靜態(tài)資源還是動態(tài)資源,并交給相應(yīng)的處理器處理.