作为一个过滤器类,请求到达的第一步就是进行初始化,即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