`

Struts1工作原理[转]

    博客分类:
  • ssh
阅读更多

 Struts1工作原理

      除了学习Struts的基础知识。建议读者还要熟知Struts较为重要的部分--工作原理,这并不是必须要学习的部分。就像很多不懂汽车内部构成原理的人照样可以驾驶汽车一样,不了解Struts的工作原理,并不影响对Struts的使用。但如果能了解Struts的工作原理,则可以更好地让Struts为自己提供服务。如果初学的读者觉得此部分有难度,可以将本节内容放在最后阅读。

     通过2.1节的讲解,相信读者已经拥有驾驭Struts框架的能力,下面将从工作原理角度入手来继续深入学习Struts框架。

     图2.3简单描述了Struts的工作原理。它把Struts框架处理客户请求的整个过程细分为八个步骤,下面就来详细分析这些步骤。

 
(点击查看大图)图2.3  struts工作原理示意图

1. 读取配置(初始化ModuleConfig对象)

     采用Struts框架的Web应用,在Web应用启动时就会加载并初始化ActionServlet,在ActionServlet初始化ModuleConfig的时候,调用initModuleConfigFactory()初始化配置工厂,然后由配置工厂通过initModuleConfig("", config)获得ModuleConfig对象。

     通过ModuleConfig对象调用下列方法去初始化相关模块。

  1. initModuleMessageResources(moduleConfig);  
  2. initModuleDataSources(moduleConfig);  
  3. initModulePlugIns(moduleConfig); 

     这些方法的功能就是:容器在加载Struts应用程序时,会先加载web.xml中与Struts相关的一些配置参数,找到struts-config.xml文件,然后通过循环来读取此文件和解析里面的内容,并初始化相关对象。

2. 用户请求

     用户提交表单或调用url向Web应用程序服务器提交一个请求,请求的数据用HTTP协议上传给Web服务器。

3. 填充FormBean

     填充FormBean的过程包括实例化、复位、填充数据、校验、保存等操作。根据*.do请求从ActionConfig中找出对应该请求的Action子类,如有对应的Action且这个Action有一个相应的ActionForm,则ActionForm被实例化并用HTTP请求的数据填充其属性,并保存在ServletContext中,这样它们就可以被其他Action对象或JSP调用。如果没有对应的Action,控制器则直接转发给JSP或静态页面。

4. 转发请求

     控制器根据配置信息ActionConfig将请求派发到具体的Action,与请求相应的FormBean将一并传给这个Action对象。

5. 处理业务

     Action一般只包含一个execute()方法,它负责执行相应的业务逻辑。执行完毕后返回一个ActionForward对象,控制器通过该ActionForward对象进行转发工作。

6. 返回响应

     Action根据业务处理的不同结果返回一个响应对象给总控制器,该目标响应对象对应一个具体的JSP页面或另一个Action。

7. 查找响应

     总控制器根据业务功能Action返回的目标响应对象找到对应的资源对象,通常是一个具体的JSP页面。

8. 响应用户

     目标响应对象将结果展现给用户目标响应对象,即具体的JSP页面,这样客户就得到响应的结果。

     这里只是从使用Struts的角度对它的工作原理作了分析,在后面的章节中还会深入分析ActionMapping对象、ActionForm对象及Action对象的初始化过程。下面通过一个示例来加深对Struts工作原理的理解。

 

(转自51CTO.com http://book.51cto.com/art/200909/152101.htm

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics