Struts体系结构概况

Struts2 的体系与 Struts1 体系的差别非常大,因为 Struts2 使用了 WebWork 的设计核心,而不是 Struts1 的设计核心。 Struts2 中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与 Servlet API 分离。
Struts2 框架的大概工作机制:



从图可以看出,一个请求在  Struts2  框架中的处理大概分为以下几个步骤:

1 、客户端初始化一个指向  Servlet  容器(例如  Tomcat )的请求;

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

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

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

5 ActionProxy  通过  Configuration Manager  询问框架的配置文件,找到需要调用的  Action  类;

6 ActionProxy  创建一个  ActionInvocation  的实例。

7 ActionInvocation  实例使用命令模式来调用,在调用  Action  的过程前后,涉及到相关拦截器( Intercepter )的调用。

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

FilterDispatcher

FilterDispatcher 是运行在 Web 应用中的,负责拦截所有的用户请求,当用户的请求中有以 .action 结尾的,就会转到 Struts2 框架处理。最后根据具体的 action 的名来在 struts.xml 中调用哪一个 Action Struts2 真正用于处理用户请求的 Action 实例,并不是用户实现的业务控制器,而是 Action 代理 。因为用户实现的业务控制器完全与 Servlet API 解耦,所以它并不能处理用户的请求参数,而 Struts 提供了一系列拦截器,该系列拦截器负责将 HttpServletRequest 参数解析出来,传入到最后的用户定义的业务控制器中。这一系列过程其实就是典型的 AOP (面向切面编程)



本文转自 zhao_xiao_long 51CTO博客,原文链接:http://blog.51cto.com/computerdragon/1166343
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值