您的位置:首页 > 编程语言 > Java开发

Struts2平凡之路(三)Struts2架构和运行流程

2015-06-10 16:39 288 查看
下面来一起探究下struts2框架的运行流程

在struts2的说明文档下有一张struts2的全景图



橙色部分是Servlet Filters 也就是过滤器链

蓝色部分是struts2的为我们提供的核心组件

浅绿色部分是strtus2提供的一系列拦截器

浅***部分是我们平时工作中主要编写的东东

FilterDispatcher是struts2的核心控制器,是整个框架的司令官,会根据ActionMapper的结果来决定是否启动struts2框架来进行处理用户所发出的请求

ActionMapper会判断请求是否需要struts2来处理,如果需要则返回一个对象来描述请求对应的ActionInvocation信息

ActionProxy Action 的代理类,位于Action和框架之间

ConfigruationManager 配置管理中心,用于加载和管理struts.xml

ActionInvocation 真正调用并执行Action,它拥有一个Action实例和这个Action所依赖的拦截器,它会执行Action,拦截器,以及相应的result

Interceptor 拦截器,可以自动的拦截action

result 返回相对应的视图类型

templates 各种视图的模板

tag subsystem struts2标签库

运行流程

1.请求通过一系统的过滤器,最后到达FilterDispatcher这个 核心过滤器

2.该过滤器会将请求转发给ActionMapper并询问该请求是否启动struts2框架来进行处理

3.如需要处理则创建ActionProxy,ActionProxy作为Action和框架的中间层,会代理Action的运行过程

4.ActionProxy被创建出来后并不知道运行哪个Action,这时它只是拿到了FilterDispatcher的请求的url,ActionProxy会去向ConfigurationManager询问要运行哪个Action

5.ConfigurationManager会去struts.xml中查找到底要运行哪个Action,ConfigurationManager会在服务启动时就将struts.xml全部加载到内存中,ConfigurationManager 可以看作是struts.xml在内存中的映像

6.ActionProxy这时会拿到运行哪个Action,相关的拦截器,以及所有的result信息,这时会创建ActionInvocation对象,ActionInvocation描述了Action运行的整个过程

7.ActionInvocation在执行真正的action类之间,会调用一系列的拦截器,这时拦截器是顺序执行的

8.在执行完action并根据action的result返回相应的结果并在struts.xml中进行匹配

9.ActionInvocation会再按照拦截器引用顺序的倒序再次执行各个拦截器的后置部分

10.ActionInvocation执行完毕后,生成响应的httpServletResponse对象,最后按与过虑器相反的顺序,向用户返回响应结果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: