Struts2工作原理

在Struts2框架中的处理大概分为以下几个步骤:

1、客户端发出一个指向Servlet容器(例如Tomcat)的请求

2、这个请求经过一个过滤器链,这个过滤器链包括ActionContextCleanUp过滤器、其他Web应用过滤器和StrutsPrepareAndExecuteFilter过滤器,其中StrutsPrepareAndExecuteFilter过滤器是必须要配置的

3、当核心控制器StrutsPrepareAndExecuteFilter(Struts2.1以前是FilterDispatcher)被调用时,StrutsPrepareAndExecuteFilter查找ActionMapper,以确定这个请求是否需要调用某个Action

4、ActionMapper查找需要调用Action,并返回ActionProxy(Action对象的代理),StrutsPrepareAndExecuteFilter把请求的处理交给ActionProxy

5、ActionProxy 依照框架的配置文件(struts.xml),找到需要调用的 Action 类

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

7、ActionInvocation 先调用相关的拦截器(Action 调用之前的部分),最后调用 Action

8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果,返回结果通常是(但不总是,也可能是另外的一个 Action 链)JSP 技术或者 FreeMarker 的模版技术的网页呈现。Struts2 的标签和其他视图层组件,帮助呈现我们所需要的显示结果。在此,我想说清楚一些,最终的显示结果一定是 HTML 标签。标签库技术和其他视图层技术只是为了动态生成 HTML 标签。

9、接着按照相反次序执行拦截器链 ( 执行 Action 调用之后的部分 )。最后,响应通过滤器链返回(过滤器技术执行流程与拦截器一样,都是先执行前面部分,后执行后面部)。如果过滤器链中存在 ActionContextCleanUp,FilterDispatcher 不会清理线程局部的 ActionContext。如果不存在 ActionContextCleanUp 过滤器,FilterDispatcher 会清除所有线程局部变量。



                                              Struts2原理图


查找

 

ActionMapper

,以确定这个请求是否需要调

用某个

 

Action

 

查找

 

ActionMapper

,以确定这个请求是否需要调

用某个

 

Action

 

查找

 

ActionMapper

,以确定这个请求是否需要调

用某个

 

Action

 

查找

 

ActionMapper

,以确定这个请求是否需要调

用某个

 

Action

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值