`

Struts源码学习之ActionServlet (四)

阅读更多

⑦ 用户插件的初始化 initModulePlugIns(moduleConfig);

在上面第步的中我们已经创建了ModuleConfig对象并在struts-config.xml等配置文件中得到得到一些配置且封装到ModuleConfig对象中,所以在下面可以直接使用initModulePlugIns(ModuleConfig config);

 

initModulePlugIns(moduleConfig); 所做的工作:

// moduleConfig中读取所有的插件文件

PlugInConfig[] plugInConfigs = config.findPlugInConfigs();

PlugIn[] plugIns = new PlugIn[plugInConfigs.length];

 

// 把所有plugIns存储到servletContext

// 属性名为Globals.PLUG_INS_KEY + config.getPrefix()

.......

getServletContext().setAttribute(Globals.PLUG_INS_KEY

            + config.getPrefix(), plugIns);

.......

 

⑧ 把struts配置文件中的其他配置 存储到servletContext ,包括

initModuleFormBeans(moduleConfig);

initModuleForwards(moduleConfig);

initModuleExceptionConfigs(moduleConfig);

initModuleActions(moduleConfig);

 

⑨ 调用 moduleConfig.freeze(); 固定组件配置

/* 使ModuleConfig中的 actionConfigs/actionConfigList exceptions formBeansforwardsmessageResourcesplugIns等的配置等变得不可改变 */

moduleConfig.freeze();

 

 

⑩ 解析以"config/"开头的其他struts配置文件

// 遍历web.xmlservletConfig配置的 initParameterNames

// 如发现以" config/ " 开始的parameter,则根据此值初始化其它的ModuleConfig

Enumeration names = getServletConfig().getInitParameterNames();

while (names.hasMoreElements()) {

    String name = (String) names.nextElement();

    if (!name.startsWith(configPrefix)) {

        continue;

    }

    String prefix = name.substring(configPrefixLength);

    moduleConfig =

        initModuleConfig(prefix,

            getServletConfig().getInitParameter(name));

    initModuleMessageResources(moduleConfig);

    initModulePlugIns(moduleConfig);

    initModuleFormBeans(moduleConfig);

    initModuleForwards(moduleConfig);

    initModuleExceptionConfigs(moduleConfig);

    initModuleActions(moduleConfig);

    moduleConfig.freeze();

}

<servlet>

        <servlet-name>action</servlet-name>

        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

        <init-param>

            <param-name>config</param-name>   <!-- 得到"config"参数-->

            <param-value>/WEB-INF/struts-config.xml</param-value>

        </init-param>

        <init-param>

            <param-name>config/admin</param-name> <!-- 得到"config/admin"参数-->

            <param-value>/WEB-INF/struts-config-admin.xml</param-value>

        </init-param>

        .......

    </servlet>

 

 

⑩ 解析以"config/"开头的其他struts配置文件之后ActionServletinit()方法还需要做

// 初始化其他模块的前缀

this.initModulePrefixes(this.getServletContext());

 

initModulePrefixes(this.getServletContext()); 所做的工作:

/* 把其他模块prefixes存储到servletContext中,属性名为

Globals.MODULE_PREFIXES_KEY " org.apache.struts.globals.MODULE_PREFIXES " */

context.setAttribute(Globals.MODULE_PREFIXES_KEY, prefixes);

 

// 设置configDigester = null,释放内存

this.destroyConfigDigester();

 

 

至此struts 的核心类ActionServletinit()方法完成servlet的初始化工作。

分享到:
评论

相关推荐

    Struts 源码学习之ActionServlet

    可以对struts进行深入的学习.个人觉得是个很不错的文档,因积分的问题不得不出卖自己的珍藏之物

    struts1深入学习

    struts1学习资料:里面包含struts源码工程 ActionServlet DispatchAction Action LookUpDispatchAction的用法 还包含html logic bean tiles标签的详细使用方法和validate验证框架的具体案例

    Struts原理、开发及项目实施

    如下图2所示: &lt;br/&gt; 控制:通过图2大家可以看到有一个XML文件Struts-config.xml,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet。ActionServlet是一...

    外文翻译 stus MVC

    The file struts-config.xml instructs ActionServlet on how to use the extended classes. There are several advantages to this approach: • The entire logical flow of the application is in a ...

    网上书店、网上银行、虚拟基金交易平台(三个项目源码)

    网上书店(使用技术为JSP+Servlet+IBatis,完成前台功能) 网上银行(使用技术为Struts+Hibernate。 JSP页面采用Tiles框架布局,表单验证没有采用Validator框架验证。 JDK:1.4以上 数据库:SQL Server2000 开发工具...

    【计算机软件毕业设计】二手车交易平台的分析、设计与实现文献综述1.doc

    行动和ActionServlet的控制器实现 ,视图层的JSP文件组成。中央控制器控制,接收到一个请求,这个请求重定向到相应的 模块控制器执行动作。随后,该模块控制器处理请求并返回结果到中央控制器使用一个 JavaBean对象...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用...

    名为责任链或者拦截器或者过滤器的简单模拟

    以及最早学习到的java web中的javax.servlet.Filter的概念, 都是一种链式的处理流程,这一个环节处理完成,然后处理另一个环节,这样就可以在一个处理本身的之前和之后做一些事情了。 比如说,struts2中Action在...

    SSH架构北京实训项目源码+课件【精品】

    非常适合java学习的一个项目,我们的刘春阳老师创造性的把所有的java相关的技术都结合在这一个Training项目中,深入浅出的传授给我们的知识,倾心大奉献了:里面包含了jsp,servlet,struts,spring,hibernate,Ext,js,css,...

    JAVA核心技术

    JSP(TagLib)——&gt;ActionForm——&gt;Action ——&gt; Event——&gt;EJBAction——&gt;EJB ——&gt;DAO——&gt;Database JSP(TagLib) (forward) &lt;——Action &lt;——EventResponse&lt;—— ??Turbine:??主要应用方面:WEB层。??主要应用...

    经典JAVA.EE企业应用实战.基于WEBLOGIC_JBOSS的JSF_EJB3_JPA整合开发.pdf

    该案例既提供了ide无关的、基于ant管理的项目源码,也提供了基于netbeans ide的项目源码,最大限度地满足读者的需求。 作者简介: 李刚,从事10年的Java EE应用开发。曾任LITEON公司的J2EE技术主管,负责该公司的...

Global site tag (gtag.js) - Google Analytics