`
JavaCrazyer
  • 浏览: 2989913 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类

Struts温习(2)--工作原理解析

阅读更多

了解一个框架,必须得深刻理解其内部执行流程,也就是所谓的工作原理,对于struts来说,了解它的工作流程尤为重要

首先有一个图可以大致展现这些流程的关联



 由于Struts是标准的MVC框架,所以要介绍下框架的构成


1.视图:采用JSP页面;(就是JSP文件)


2.控制器:采用Java Servlet,负责视图与模型之间的交互;(就是struts-config.xml文件)


控制器的每个入口点都由名为struts-config.xml的配置文件设置,该文件把来自视图的请求映射为特定的Java类以进行处理,控制器还可以指定下一个视图的位置;


3.模型:采用JavaBean, (就是java文件)


 例如:FormBean用来存储来自视图请求的表单信息;


ActionBean用来处理表单信息,实现业务处理逻辑功能;


具体执行流程


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

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

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

initModuleMessageResources(moduleConfig);  
initModuleDataSources(moduleConfig);
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工作原理的理解。



 

 

  • 大小: 24.8 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics