首页 > 代码库 > Struts2之struts2源码分析
Struts2之struts2源码分析
一、学习案例:struts2讲到这基本上可以结束了。不知道大家有什么感觉呢,反正我是都忘了,你呢。别说你都记住了。如果真是记住了,那好,请在本文下方留下大名和照片,我要贴在床头,每日加以膜拜。呵呵。回到正题,struts2一些基本的东西,在之前的文章基本都解释,并配上项目演示了。不是说,struts2的博文结束了,你的学习就结束了,我也说了,我都忘了,你如果不忘,可真就不是一般人了。就像张三丰当年传太极与张无忌一样,正常人学东西都这样的。忘了就复习呗。好了,接下来还有一章都是关于struts2源码分析,有兴趣的朋友可以上手操作下。当然接下来就该学习hibernate了,这是我之前学习框架的路线,感觉还是有一定好处的,所以下一个目标就是hibernate。
二、案例分析:关于struts2源码分析,我理所当然的从拦截器开始,在web.xml中我们就配置的拦截器,还有印象的吗,之前,我也说过,struts2有很多东西都是依赖拦截器实现的。所以我们从StrutsPrepareAndExecuteFilter下手。
a)首先,大家打开文档查看一个接口,ActionProxy,Action代理,关于代理模式的东西,大家可以自行百度了解。我们可以看见它有execute()方法,跟action中一样的形式,其作用大家借助有道看下吧,我的四级还没过呢,不敢给大家翻译,呵呵。大概意思就是action中execute()的执行就是它进行控制的。
b)还有一个getMethod(),大概意思就是获取我们在struts.xml中的action上面配置的method,如果不为null,则执行,为null则执行默认的execute()。
c)当然他只是个接口,框架实际用的则是它的实现类StrutsActionProxy。它只提供了两个方法:execute() ,prepare() ;大家了解下就行,不做过多解释。
d)好了,接下来我们看StrutsPrepareAndExecuteFilter,学习这个类,我们就要使用debug查看了。还不知道debug是干嘛的,赶快去问度娘。
e)它在org.apache.struts2.dispatcher.ng.filter下面,我们在myeclipse下打开。
f)我们找到init()方法,在里面的try下面第一条语句加个断点。然后启动tomcat,这里启动是用debug启动的,正常启动没办法进行debug的。
g)我们先清空控制台输出的内容,然后按F6直到控制台有内容输出,然后停住查看输出日志。
h)当执行到dispatcher = init.initDispatcher(config);这条语句时,三个配置文件都加载了。所以我们在语句前面加个断点,重启按F5进入查看。
i)我们发现return之前有dispatcher.init();这样一句话,所以我们接着按F5进去查看。
j)我可以挨个进行查看,当查看到init_TraditionalXmlConfigurations(); 时,我们可以看到 configPaths = DEFAULT_CONFIGURATION_PATHS;,我们按着ctrl点击去可以看到private static final String DEFAULT_CONFIGURATION_PATHS = "struts-default.xml,struts-plugin.xml,struts.xml";现在知道为什么tomcat启动时加载配置文件的顺序的来由了吧。当然接下来无非就是解析配置文件了。
三、经验之谈:
a)学习知识不要怕忘,正常人都是会忘得,忘了再复习就是了。等你复习个三五遍时,你就会成为大牛了。呵呵,开个玩笑。
b)学习语言尤其是需要耐心和细心的。初学者很容易犯错误,有时候一个问题整个三四个小时都是常事,所以要有耐心,细心就可以减少不必要的麻烦。我写博文的目的就是跟大家分享我的学习经验,同时,也是为了让大家避免一些不必要的麻烦和少走一些弯路。别说哥高大上哦,哥只是为计算机行业贡献自己的一份力量。嘿嘿。说的有点高大上了。好了,今天就这些,明天还有一章关于struts2的,到时会及时发布的。
四、参考项目:无。
五、每日一乐:
老公在写给我的第一封情信里说:“每次见到我就象心里有个小兔子到处乱撞。”
如今我们结婚5年了,心血来潮和这厮撒娇:“老公,你心里的小兔子呢?”
老公:“早撞死了”
最终解释权归找合伙人(www.23hhr.com)所有,转载请注明出处。
Struts2之struts2源码分析