在上一篇博客中讲到ActionServlet是如何初始化的以及web.xml的配置信息的具体作用。今天我们讲继续讲解ActionServlet在初始化的时候如何读取/WEB-INF/struts-config.xml信息到内存中,如何将这些从配置文件读取的信息以Actionmapping的形式展现在内存中的。
由于这部分内容是比较繁琐的,所以我对这部分的深入分析也不能太详细,但是具体实现流程我会讲清晰,如果有兴趣研究的童鞋们希望能够继续深入,研究的非常透彻的时候,可以给我发邮件或Q我。
下面来开始今天的博客,我们先从ActionServlet源代码的init方法开始。因为ActionServlet就是一个Servlet,它也是具有典型的那几个方法init、doget、dopost等方法。既然是初始化,那么我们就要看init方法。Init方法的源代码如下:
在解释这段代码的流程和意思之前,有必要说一句,就是当我们在eclipse里面看代码的时候,尤其是看一段生疏的很长的代码的时候,希望能够经常使用Ctrl键(多余的不解释)。
下面开始讲解这段代码的流程和具体每一步的含义,如果有不正确的地方,希望指正。
首先映入眼帘的是initInternal()方法。这个方法的实现代码是:
代码段一:
代码段二:
代码段三:
这个方法的具体作用就是初始化MessageResources,具体实现是工厂模式,首先判断defaultFactory是否存在,不存在则创建工厂,
defaultFactory = MessageResourcesFactory.createFactory(),在通过工厂创建资源类defaultFactory.createResources(config);存在则直接创建资源类。
initOther()的方法,主要是初始化其它的配置,获取我们自己的struts-config配置文件的路径,
而它的默认路径就是web-inf/struts-config.xml,另外这个方法还会注册一些转换类的。具体源代码是:
initServlet()方法是利用digester读取web.xml文件并且放到servletContext中。具体实现源代码:
这篇博客先介绍这几个方法,随着这些方法具体作用和具体实现的慢慢的我们就知道init方法的作用,也慢慢的就解开了当我们实例化ActionServlet的时候,digester是如何读取/WEB-INF/struts-config.xml的文件内容,并且放到了ActionMapping中。敬请期待!
分享到:
相关推荐
《深入浅出Struts2》对Struts 2 的工作机理进行了透彻的阐述。书中介绍了如何利用Struts 2 来解决Web 应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts 2 应用程序的技巧,如管理页面导航...
深入浅出Struts2 这本书的 如果你想学习Struts2 框架 值得看一看
│深入浅出STRUTS 2 Struts Ti却发现了二者在技术与开发人员这两个层面上的共同之处,不久之后,两个项目就在WebWork的技术基础上进行了合并2。 当我们说起WebWork的时候,我们实际上说的是两个项目——XWork和...
非常好的Struts入门资料,InfoQ中文站出品
书中介绍了如何利用Struts2来解决Web应用开发中的常见问题,同时还深入浅出地探讨了许多能帮助程序员编写Struts2应用程序的技巧,如管理页面导航活动、输入验证、国际化和本地化、对Ajax的支持,等等。书中概念清晰...
一个有关学生管理的Struts框架开发的实例,想学习struts框架的可以参考一下,实例比较简单易懂,很容易理解struts框架的精髓。
深入浅出Struts2中文版,讲解清晰明了,很有助于初学者入门
struts 深入浅出pdfstruts
深入浅出Struts 2.pdf(原书扫描版)
《深入浅出Struts2》电子版全书.rar 《深入浅出Struts2》电子版全书.rar
深入浅出Struts随书源码 深入浅出Struts随书源码 深入浅出Struts随书源码 深入浅出Struts随书源码
struts2 验证框架实例 掩饰了整个验证的过程 并讲解了一些网上没有说过的可能会遇到的错误
一本学习Strusts2非常好的书,由浅入深的讲解了Struts的原理以及应用
整合Struts 2.0和Hibernate 3.2,一个简单的工程。配置全部详细写好。
一个java框架struts2 简单完整的实例,学习struts2的入门基础