WEBWORK的架构图得详细介绍

WEBWORK的架构图得详细介绍

WEBWORK的架构图得详细介绍

WEBWORK的架构图如上图所示;

一个初始的请求被发送到Servlet容器,这个请求经过一个标准的Filter链,其中包括(可选的)ActionContextCleanUp Filter,如果你要在应用程序中整和其他的技术如Sitemesh,就需要使用这个Filter,然后请求经过FilterDispatcher,在它里面ActionMapper会判断这个请求是否需要调用Action。

如果ActionMapper决定应该调用一个Action,FilterDispather就把请求委托给ActionProxy,ActionProxy通过WebWork的配置文件管理器读取xwork.xml文件里的配置信息,然后创建了一个实现了命令模式的ActionInvocation。这一过程包括在调用action本身之前调用所有的interceptor,一旦action方法返回,ActionInvocation就要查找xwork.xml文件中这个action的结果码所对应的result,然后执行这个result,然后执行这个result。通常情况下result会调用JSP或FreeMarker模板来呈现页面。当呈现页面时,模板可以使用Webwork提供的一些标签,其中一些组件可以和Actionmapper一起工作为后面的请求呈现恰当的URL。

在这个架构中的所有对象(action,result,interceptor等等)都是通过ObjectFactory创建的。ObjectFactory是可插入,因此可以和spring,pico这样的框架整合的很好。如果需要,Webwork中的对象也可以由你自己提供的ObjectFactory来创建。

最后interceptor被再次执行,顺序和开始相反,然后最终请求被返回给web.xml中配置的其他Filter。如果已经设置了ActionContextCleanUp Filter,那么FilterDispatcher就不会清理ThreadLocal中的ActionContext信息。如果没有设置ActionContextCleanUp Filter,FilterDispatcher会清理掉所有的ThreadLocal。