struts2源码初读(一)初始化
很久之前就有读一下struts2源码的想法了,可是一直没什么时间也静不下心来,最近淡定下来了晚上也没什么事,综合项目看看了struts2源码,目前还是个菜,写的不对的地方请大家谅解
看了downpour的文章让我受益匪浅,文章中会引用到downpour的文章和图片,顺便给downpour推荐下新书《Struts2技术内幕》,看了样章个人感觉很不错,值得一看
-----------------------------------------------
downpour的《Struts2技术内幕》 新书样章和导读
-----------------------------------------------
看源代码之前了解下struts2逻辑结构,此处引用自downpour文章
Struts2请求流程
1、客户端发送请求
2、StrutsPrepareAndExecute通过ActionMapper来决定这个Request需要调用哪个Action
3、如果ActionMapper决定调用某个Action,FilterDispatcher把请求的处理交给ActionProxy,这儿已经转到它的Delegate--Dispatcher来执行
4、ActionProxy根据ActionMapping和ConfigurationManager找到需要调用的Action类
5、ActionProxy创建一个ActionInvocation的实例
6、ActionInvocation调用真正的Action,当然这涉及到相关拦截器的调用
7、Action执行完毕,ActionInvocation创建Result并返回,当然,如果要在返回之前做些什么,可以实现PreResultListener
准备知识做完了,现在开始看struts2源码。说到浏览struts2源码当然要从struts2的入口类StrutsPrepareAndExecute开始
在web.xml中配置filter,filter-class是StrutsPrepareAndExecute类或其子类
private void init_AliasStandardObjects() { configurationManager.addConfigurationProvider(new BeanSelectionProvider()); }/** * 主要加载org/apache/struts2/struts-messages */... ...LocalizedTextUtil.addDefaultResourceBundle("org/apache/struts2/struts-messages");... ...