org.eclipse.jetty.webapp 包下的 StandardDescriptorProcessor類。該類對象會在WebAppContext的doStart方法啟用 註冊了遍歷web.xml中的元素中的方法,後續會用反射機制來調用這些方法。比如filter元素用visitFilter處 ...
org.eclipse.jetty.webapp 包下的
StandardDescriptorProcessor類。該類對象會在WebAppContext的doStart方法啟用
註冊了遍歷web.xml中的元素中的方法,後續會用反射機制來調用這些方法。比如filter元素用visitFilter處理。
IterativeDescriptorProcessor的process ()方法會對web.xml中的每個元素進行遍歷。web.xml中的每個元素算是一個node。比如 <filter></filter>包圍起來的算是一個node。<filter-mapping></filter-mapping>包圍起來的也是一個node。
process()方法在WebAppContext的doStart()方法調用的時候被調用。
process()還會調用end(context,descriptor);
end()方法會進行filter、servlet等的設置,如
context.getServletHandler().setFilters(_filterHolders.toArray(new FilterHolder[_filterHolderMap.size()]));
filter的相關內容保存在servletHandler對象中。
ServletContextHandler構造了包含ServletHandler等的Context對象。
ServletContextHandler()的構造函數調用relinkHandlers方法構建servletHandler對象(通過getServletHandler方法構建)
WebAppContext類的層次如下