`

Struts1.2 控制流程----面试时可用

阅读更多

有的同学问我如何向面试官描述Struts1.2控制流程。
关键还是要自己了解透彻。
现总结如下。供参考:


Struts1.2依然是应用很广的框架,熟悉其基本的控制流程是必要的:


一、ActionServlet的初始化

ActionServlet作为Struts组件的前端控制器,由于web.xml的相应配置:

<load-on-startup>0</load-on-startup>

在应用一加载时即会被实例化并调用其init方法,init方法所做的主要工作有二:

1. 加载struts配置文件,并创建用于封装配置信息的ModuleConfig对象
2. 加载资源文件,并创建用于封装资源文件的MessageResources对象
需要注意两点:如果web.xml有多模块配置,将创建多个ModuleConfig对象和MessageResources对象分别用于封装各个模块的struts配置文件和资源文件。
针对各个模块所创建的ModuleConfig对象和MessageResources对象将存储在ServletContext中,对应的属性名中有该模块名称的相应标识。
另外,如果有相应配置的话,init方法还将初始化数据源和PlugIn



二、ActionServlet的process

所有形如*.do的请求(根据web.xml中的相关配置)将提交给ActionServlet,最终将调用其process方法。process方法的主要工作有三:

1.  根据请求信息获知所请求的模块名称,从ServletContext中获得与请求模块对应的的ModuleConfig对象,并存储到request中。
2.  根据模块信息获得相应的RequestProcessor对象,一个模块对应一个RequestProcessor对象,RequestProcessor对象将关联与所属模块对应的ModuleConfig对象。
3.  调用RequestProcessor对象的process方法,将request和response作为参数传递给它。



三、RequestProcessor的process

RequestProcessor对象的process方法的主要工作有五步:

1.  调用自己的 processPreprocess(request, response)方法,该方法不进行任何操作,用于子类重写扩展其功能。
2.  获得与请求地址所匹配的ActionMapping对象,AcionMapping对象用于封装一个特定acion的配置信息。
3.  根据ActionMapping中的配置信息获得ActionForm对象(该对象将缓存到request或session中),并将表单数据填充到ActionForm中,然后根据ActionMapping的配置决定是否验证ActionForm,如果验证,将调用ActionForm的validate方法,若其返回的ActionErros对象中包含ActionMessage对象则表示验证失败,将转向action配置信息input属性所指示的地址。
4.  如果ActionForm无需验证或验证通过将创建并缓存与请求地址匹配的Action对象,将ActionMapping对象、ActionForm对象、request和response作为参数调用其execute方法。
5.  根据Action对象的execute方法返回的ActionForward对象,将请求转发或重定向到该ActionForward所封装的地址。

分享到:
评论

相关推荐

    java最新面试宝典

    ### Java最新面试宝典知识点概览 #### 一、Java基础 **1.1 Collection和Map** - **知识点概述:** - 掌握`Collection`接口及其子接口`List`、`Set`的不同之处。 - 理解`Map`接口与`Collection`接口的主要区别。 ...

    2021年最新java面试题.pdf

    根据提供的文件信息,我们可以归纳出以下关键知识...以上总结了关于Java面试题中涉及的重要知识点,涵盖了面向对象的基础、SSH框架的理解、MVC模式的概念、XML解析的不同方法以及WebService和Struts的工作机制等内容。

    Java工程师面试宝典

    ### Java工程师面试宝典 #### 1. Java基础 ##### 1.1 Collection和Map - **Collection**:这是Java集合框架的基础接口,用于存储非重复元素。它有两个子接口:`List` 和 `Set`。 - **List**:有序集合,允许重复...

    SPRING面试宝典

    ### SPRING面试宝典知识点详解 #### 一、Spring概述 **1.1 什么是Spring?** Spring框架是由Rod Johnson创建的一个开源项目,它最初是为了简化企业级Java应用程序的开发而设计的。Spring是一个轻量级的应用框架,...

    java 面试题 总结

    Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是,Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而...

    超级有影响力霸气的Java面试题大全文档

    超级有影响力的Java面试题大全文档 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。...

Global site tag (gtag.js) - Google Analytics