Struts2--工作流程

下图描述了Struts 2 的整体结构

 



 

 

1、 在上图中客户端初始化一个指向Servlet容器(例如 Jetty 或者Resin)的请求

2 、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin

3 、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action

4 、如果ActionMapper决定需要调用某个ActionFilterDispatcher把请求的处理交给ActionProxy

5、 ActionProxy通过Configuration Manager询问框架的配置文件(从struts.xml文件开始),找到需要调用的Action

6 、ActionProxy创建一个ActionInvocation的实例,ActionInvocation实例使用命名模式来调用

7、在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

扫描二维码关注公众号,回复: 754794 查看本文章

8 、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper

       : 在上述过程中所有的对象(ActionResultsInterceptors,等)都是通过ObjectFactory来创建的。ObjectFactory是非常灵活的,当需要知道对象在框架中被创建时,我们可以在任何情况下提供我们自己的ObjectFactory。一种比较流行的实现ObjectFactory的方法是用Spring提供的ObjectFactory

9 、调用视图之后,会再次以相反的顺序经过拦截器

10 、最后响应经过web.xml配置文件的过滤器,如果ActionContextCleanUp 存在,FilterDispatcher 将不会清除本地线程中的ActionContext,否则,将会清除所有本地线程。

 

参考:http://struts.apache.org/release/2.3.x/docs/big-picture.html 

当然也有参考网上别人翻译的^ ^!

 

猜你喜欢

转载自huangminwen.iteye.com/blog/1833531