阅读背景:

Struts2源码深究:StrutsPrepareAndExecuteFilter

来源:互联网 
一、概述 Struts2的核心是一个Filter,Action可以脱离web容器,那么是什么让http请求和action关联在一起的,下面我们深入源码来分析下Struts2是如何工作的。FilterDispatcher API 写道Deprecated. Since Struts 2.1.3, use StrutsPrepareAndExecuteFilter instead or StrutsPrepareFilter and StrutsExecuteFilter if needing using the ActionContextCleanUp filter in addition to this one 鉴于常规情况官方推荐使用StrutsPrepareAndExecuteFilter替代FilterDispatcher,我们此文 将剖析StrutsPrepareAndExecuteFilter,其在工程中作为一个Filter配置在web.xml中,配置如下:Xml代码 收藏代码 < filter > < filter-name > struts2 </ filter-name > < filter-class >org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </ filter-class > </ filter > < filter-mapping > < filter-name > struts2 </ filter-name > < url-pattern > /* </ url-pattern > </ filter-mapping > [xml] view plaincopy struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter struts2 /* 二、源码属性方法简介 下面我们研究下StrutsPrepareAndExecuteFilter源码,类的主要信息如下: 属性摘要protected List excludedPatterns protected ExecuteOperations execute protected PrepareOperations prepare StrutsPrepareAndExecuteFilter与普通的Filter并无区别,方法除继承自Filter外,仅有一个回调方法,第三部分我 们将按照Filter方法调用顺序,由init—>doFilter—>destroy顺序地分析源码。方法摘要 void destroy () 继承自Filter,用于资源释放 void doFilter (ServletRequest req, ServletResponse res, FilterChain chain) 继承自Filter,执行方法 void init (FilterConfig filterConfig) 继承自Filter,初始化参数protected void postInit (Dispatcher dispatcher, FilterConfig filterConfig) Callback for post initialization(一个空的方法,用于方法回调初始化) 三、源码剖析 1、init方法 init是Filter第一个运行的方法,我们看下struts2的核心Filter在调用init方法初始化时做哪些工作:Java代码 收藏代码 public void init(FilterConfig filterConfig) throws ServletException { InitOperations init = new InitOperations(); try { //封装filterConfig,其中有个主要方法getInitParameterNames将参数名字以String格式存储在List中 FilterHostConfig config = new FilterHostConfig(filterConfig); // 初始化struts内部日志 init.initLogging(config); // 一、概述 Struts2的核心是一个Filter,Action可以脱离web容器,那么是什么让



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: