作爲一個過濾器類,請求到達的第一步就是進行初始化,即init()操作。
StrutsPrepareAndExecuteFilter.init
public void init(FilterConfig filterConfig) throws ServletException {
//初始化InitOperations
InitOperations init = new InitOperations();
Dispatcher dispatcher = null;
try {
//獲取web.xml的Filter內的init-param參數配置
FilterHostConfig config = new FilterHostConfig(filterConfig);
//初始化日誌
init.initLogging(config);
//初始化dispatcher(分配器)
dispatcher = init.initDispatcher(config);
init.initStaticContentLoader(config, dispatcher);
//當前請求運行之前的包含初始化的操作--僅產生PrepareOperations對象
prepare = new PrepareOperations(dispatcher);
//所有過濾器所包含運行操作--僅產生ExecuteOperations對象
execute = new ExecuteOperations(dispatcher);
//獲得設置struts所排除的url
this.excludedPatterns = init.buildExcludedPatternsList(dispatcher);
postInit(dispatcher, filterConfig);
} finally {
if (dispatcher != null) {
dispatcher.cleanUpAfterInit();
}
init.cleanup();
}
}
接下來將我初始化日誌系統的操作:Logging System