struts2的框架流程

一、先来说说struts2的背景

struts2可谓是站在巨人的肩膀上超越,它不仅仅是对struts1的升级,而是struts的新一代产品,是在struts1和webwork的技术基础上进行合并的全新框架。struts2的核心是webwork,采用拦截器的机制来处理用户的请求,其业务逻辑控制器能和servletApi完全脱离开,所以struts2本质上是webwork的更新,而和struts1的差别很大。

二、下面我们看一下struts官方提供的原理图

struts2的框架流程

三、下面说一下具体的流程:

1、当客户端发过来一个request时,这个请求经过一系列的过滤器(比如图中的ActionContextCleanup,other filters),到达struts2的核心过滤器strutsPrepareAndExecuteFilter,这里特别注意strutsPrepareAndExecuteFilter是整个struts2的核心;

2、strutsPrepareAndExecuteFilter拿着这个请求去询问ActionMapper,让ActionMapper来解析这个请求是否要请求某个Action,然后将解析的结果返回给strutsPrepareAndExecuteFilter,如果不需要请求action,比如某些时候请求的是静态资源,如果需要请求action,就进行下面的步骤;

3、strutsPrepareAndExecuteFilter把请求交给ActionProxy(Action代理,用来生成需要的action),ActionProxy拿到这个请求后,去询问ConfigurationManager(配置管理器),然后ConfigurationManager通过去查询struts的配置文件(就是struts.xml)来获取请求的action,接下来将解析完成后的信息返回给ActionProxy;

4、ActionProxy实例化一个ActionInvocation来生成对应的action,由于struts2是基于Interceptor(拦截器)机制,所以在执行action之前会执行很多Interceptor,struts2将很多功能都封装到了拦截器中,这也是它强大的地方;

5、通过执行一系列的Interceptor,到达action,执行action后返回视图,然后再进行拦截器的后处理,最后生成响应response;

struts2的流程就是这样了,如果有不妥当的地方,欢迎大家踊跃指正。

转载于:https://my.oschina.net/ayo123/blog/870663