- 1、本文档共52页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]深入浅出Web容器-Tomcat原始码分析
深入淺出 Web 容器 Tomcat 原始碼分析 主題 Web 容器與 Servlet 從 HTTP 請求到 service() 在service()的前後 從 JSP 到 Servlet 自訂標籤處理 Web 容器與 Servlet Web 容器與 Servlet Web 容器與 Servlet Web 容器與 Servlet 從 HTTP 請求到 service() 從 HTTP 請求到 service() 從 HTTP 請求到 service() 從 HTTP 請求到 service() 從 HTTP 請求到 service() 從 HTTP 請求到 service() 從 HTTP 請求到 service() 在service()的前後 在service()的前後 在service()的前後 GenericServlet類別 還實作了ServletConfig介面,將容器呼叫init()方法時所傳入的ServletConfig實例封裝起來 service()方法直接標示為abstract而沒有任何的實作 HTTP相關服務流程定義在HttpServlet的service()方法 在service()的前後 在service()的前後 在service()的前後 在service()的前後 在service()的前後 從 JSP 到 Servlet 從 JSP 到 Servlet 從 JSP 到 Servlet 從 JSP 到 Servlet 從 JSP 到 Servlet 從 JSP 到 Servlet 從 JSP 到 Servlet 在%!與%之間宣告的程式碼,都將轉譯為Servlet中的類別成員或方法 %與%之間所包括的內容,將被轉譯為Servlet原始碼_jspService()方法中的內容 %=與%運算式元素中的運算式,會直接轉譯為out物件print()輸出時的指定內容 從 JSP 到 Servlet 隱含物件,其實就是_jspService()中的區域參考名稱… 自訂標籤處理 自訂標籤處理 自訂標籤處理 自訂標籤處理 當JSP網頁中包括Simple Tag自訂標籤 ,在轉譯之後... 建立自訂標籤處理器實例。 呼叫標籤處理器的setJspContext()方法設定PageContext實例。 如果是巢狀標籤中的內層標籤,則還會呼叫標籤處理器的setParent()方法,並傳入外層標籤處理器的實例。 設定標籤處理器屬性(例如這邊是呼叫IfTag的setTest()方法來設定)。 呼叫標籤處理器的setJspBody()方法設定JspFragment實例。 呼叫標籤處理器的doTag()方法。 銷毀標籤處理器實例。 自訂標籤處理 當JSP中遇到TagSupport自訂標籤時 嘗試從標籤池(Tag Pool)找到可用的標籤物件,如果找到就直接使用,如果沒找到就建立新的標籤物件。 呼叫標籤處理器的setPageContext()方法設定PageContext實例。 如果是巢狀標籤中的內層標籤,則還會呼叫標籤處理器的setParent()方法,並傳入外層標籤處理器的實例。 設定標籤處理器屬性(例如這邊是呼叫IfTag的setTest()方法來設定)。 呼叫標籤處理器的doStartTag()方法,並依不同的傳回值決定是否執行本體或呼叫doAfterBody()、doEndTag()方法(稍後詳述)。 將標籤處理器實例置入標籤池中以便再度使用。 自訂標籤處理 自訂標籤處理 自訂標籤處理 最後… if (connector.getEmptySessionPath() isRequestedSessionIdFromCookie()) { session = manager.createSession(getRequestedSessionId()); } else { session = manager.createSession(null); } public Session createSession(String sessionId) { Session session = createEmptySession() session.setNew(true); session.setValid(true); session.setCreationTime(System.currentTimeMillis()); session.setMaxInactiveInterval(this.maxInactiveInterval); if (sessionId == null) {
文档评论(0)