文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Struts 2架构图以及说明

Struts 2架构图以及说明

时间:2011-03-22  来源:Jolly-zhang

此文件copy自struts2 reference.个人认为这个图对理解struts2非常有帮助,所以就拿来放到自己的博客上了。



In the diagram, an initial request goes to the Servlet container (such as Jetty or Resin) which is passed through a standard filter chain. The chain includes the (optional)ActionContextCleanUp   filter, which is useful when integrating technologies such as  SiteMesh Plugin . Next, the required  FilterDispatcher   is called, which in turn consults theActionMapper   to determine if the request should invoke an action.

If the ActionMapper determines that an Action should be invoked, the FilterDispatcher delegates control to the  ActionProxy . The ActionProxy consults the frameworkConfiguration Files   manager (initialized from the  struts.xml   file). Next, the ActionProxy creates an  ActionInvocation , which is responsible for the command pattern implementation. This includes invoking any  Interceptors   (the  before   clause) in advance of invoking the  Action   itself.

Once the Action returns, the ActionInvocation is responsible for looking up the proper  result   associated with the  Action result code   mapped in  struts.xml . The result is then executed, which often (but not always, as is the case for  Action Chaining ) involves a template written in  JSP   or  FreeMarker   to be rendered. While rendering, the templates can use the  Struts Tags   provided by the framework. Some of those components will work with the ActionMapper to render proper URLs for additional requests.

All objects in this architecture (Actions,  Results ,  Interceptors , and so forth) are created by an  ObjectFactory . This ObjectFactory is pluggable. We can provide our own ObjectFactory for any reason that requires knowing when objects in the framework are created. A popular ObjectFactory implementation uses Spring as provided by the  Spring Plugin .

Interceptors are executed again (in reverse order, calling the  after   clause). Finally, the response returns through the filters configured in the  web.xml . If the ActionContextCleanUp filter is present, the FilterDispatcher will  not   clean up the ThreadLocal  ActionContext . If the ActionContextCleanUp filter is not present, the FilterDispatcher will cleanup all ThreadLocals.

注意:与struts1不同,struts2对用户的每一次请求都会创建一个action,所以struts2的action是线程安全的。
struts1中的action是singleton(单例)的,struts2中的action是prototype(原型)的。

排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载