struts2 框架处理流程
struts2 框架处理流程
流程图如下:

注意:StrutsPrepareAndExecuteFilter替代了2.1.3以前的FilterDispatcher过滤器,使得在执行Action之前可以添加过滤器了。
文档说明:Deprecated.Since Struts 2.1.3, use StrutsPrepareAndExecuteFilter instead or StrutsPrepareFilter and StrutsExecuteFilter if needing using the ActionContextCleanUp filter in addition to this one
下面对上面这个流程图进行详细解释:
首先,客户端通过HttpServletRequest,向servlet容器(tomcat)提交一个请求,这个请求会经过一系列的过滤器,像ActionContextCleanUp以及其它的过滤器等,经过这些过滤器以后,最终会被struts的核心控制器过滤到,也就是StrutsPrepareAndExecuteFilter。
被核心过滤器过滤到以后,核心控制器会访问ActionMapper,来决定是否要调用某一个action,也就是用户是否要请求某一个action。如果用户请求的是某一个jsp页面,或者是其它的资源,则不会访问我们的action。如果ActionMapper决定需要调用某一个action,这个时候,struts中的核心控制器会将控制权委派给ActionProxy,也就是action代理。然后,ActionProxy,Configuration Manager配置管理器来加载struts的核心配置文件,即struts.xml(action配置在struts.xml里).
如果在struts.xml中找到了要调用的action,ActionProxy(ActionProxy是Action的一个代理类,也就是说Action的调用是通过ActionProxy实现的,其实就是调用了ActionProxy.execute()方法,而该方法又调用了ActionInvocation.invoke()方法)会创建ActionInvocation的一个实例。Action Invocation里面包含了所创建的action的实例,同时它里面还有另外一个非常重要的部分,就是拦截器Interceptor。
(ActionInvocation 是Xworks 中Action 调度的核心。而对Interceptor 的调度,也正是由ActionInvocation负责。ActionInvocation 是一个接口, 而DefaultActionInvocation 则是Webwork 对ActionInvocation的默认实现。
Interceptor 的调度流程大致如下:
1.
ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor。
2.
通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。 )
在调用action之前,或者调用action之后,它还需要调用非常多的拦截器。在调用action之前,首先会依次调用所配置的拦截器,如果拦截器有多个,也会依次执行。比方说,它会首先执行第一个拦截器,那么紧接着执行第二个拦截器,再执行第三个拦截器等等。当把这些拦截器执行完了以后,它才会执行我们的action。那么执行action我们会非常熟悉,它会调用action里的业务处理方法,进行业务的处理,同时这个方法会返回一个结果(字符串),然后根据这个返回的字符串去调用视图去匹配result,一般来说会返回一个jsp页面,或者去调用另外的某一个action。
当返回这个视图以后,它真的去响应用户了吗。实际上并没有,它会将之前执行过的拦截器再倒过来执行一遍,也就是执行第三个拦截器,再是第二个,再是第一个。反向执行拦截器之后,才会进行最终的请求的响应。
友情链接:
ActionContextCleanUP过滤器来完成清除属性,不让后续的filter(FilterDispatcher)清除,从而延长action中属性的生命周期,以便在jsp页面中进行访问。
StrutsPrepareAndExecuteFilter 与 FilterDispatcher的区别
struts2 框架处理流程的更多相关文章
- Struts2框架学习(一)
Struts2框架学习(一) 1,Struts2框架介绍 Struts2框架是MVC流程框架,适合分层开发.框架应用实现不依赖于Servlet,使用大量的拦截器来处理用户请求,属于无侵入式的设计. 2 ...
- SSH(Struts2+Spring+Hibernate)框架搭建流程<注解的方式创建Bean>
此篇讲的是MyEclipse9工具提供的支持搭建自加包有代码也是相同:用户登录与注册的例子,表字段只有name,password. SSH,xml方式搭建文章链接地址:http://www.cnblo ...
- java框架篇---Struts2的处理流程
一.Struts2的处理流程: 客户端产生一个HttpServletRequest的请求,该请求被提交到一系列的标准过滤器(Filter)组建链中(如ActionContextCleanUp:它主要是 ...
- Struts2框架的运行流程
Struts2的运行流程 1.浏览器发送请求到控制器(如Struts2中的核心控制器StrutsPrepareAndExecuteFilter): 2.控制器调用Action的execute方法: 3 ...
- Struts2框架学习(二)——访问流程及架构
1.Struts2的执行流程 从客户端发送请求过来,先经过前端控制器(核心过滤器StrutsPrepareAndExecuteFilter)过滤器中执行一组拦截器(一组拦截器就会完成部分功能代码),拦 ...
- Struts2框架基础
Struts2框架基础 1.Java的框架 1.1.框架简介 在大型项目开发过程中,经常会使用到一些框架,这样做好的好处是能够提高工作效率,在java中最常用的的框架就是SSH,这其实是三个框架的简称 ...
- Struts2框架简介和示例
struts2框架 Struts2是java web的框架,在Java Web开发中,表示层框架,其核心是通过扩展Servlet来帮助处理http请求. Struct2的基本流程 Struct2的框架 ...
- Struts2框架之-注解开发
Struts2主要解决了从JSP到Action上的流程管理,如何进行Uri和action类中每个方法的绑定这是重点,在这里先简单看一下配置文件中的简单配置: <span style=" ...
- struts2框架快速入门小案例
struts2快速入门: index.jsp------>HelloAction--------->hello.jsp struts2流程 1.导入jar包 struts2的目录结构: a ...
随机推荐
- 生成ARM汇编
使用ndk即可生成arm汇编 1.首先写好hello.c 2.编写makefile #ndk根目录 NDK_ROOT=E:\Android\android-ndk-r10b #编译器根目录 TOOLC ...
- Win10搭建Linux开发环境之网络连接设定
一直想在家自己搭建一个LINUX服务器,好在上面安装个ORACLE数据库玩玩. 上次用了Ubuntu,结果ORACLE没装成功,现在换个思路,采用CentOS 7作为Linux服务器, 之后再进行构建 ...
- MVC中使用Entity Framework 基于方法的查询学习笔记 (一)
EF中基于方法的查询方式不同于LINQ和以往的ADO.NET,正因为如此,有必要深入学习一下啦.闲话不多说,现在开始一个MVC项目,在项目中临床学习. 创建MVC项目 1.“文件”--“新建项目”-- ...
- ServiceStack.Redis订阅发布服务的调用(Z)
1.Redis订阅发布介绍Redis订阅发布是一种消息通信模式:发布者(publisher)发送消息,订阅者(Subscriber)接受消息.类似于设计模式中的观察者模式.发布者和订阅者之间使用频 ...
- October 27th Week 44th Thursday 2016
The art of being wise is the art of knowing what to overlook. 智慧之道在于懂得该忽略什么. Always do your best. Wh ...
- No plugin found for prefix 'mybatis-generator' in the current project
http://blog.csdn.net/you23hai45/article/details/50792430 1.错误描述 F:\workspaces\Mybatis>mvn mybatis ...
- iOS 导出 ipa 包时 四个选项的意义
iOS 导出 ipa 包时 四个选项的意义 如图 在 iOS 到处 ipa包的时候 会有四个选项 1.Save for iOS App Store Deployment 保存到本地 准备上传App ...
- Unity Animation System(动画系统)
动画系统: 支持:动画融合,混合,叠加动画,行走循环的时间同步,动画层,控制动画的各个方面(时间,速度,融合权重) 带有每顶点1.2或4骨骼的蒙皮网格,以及支持基于物理的布娃娃系统和程序动画. ...
- 名词含义阅读 todolist
1.node webkit 2.C#设计模式 3.算法导论 4.SQLSERVER RowNum() 5.图片文字识别 6.tuple 7.yield 8.Web语义化 (多用 p ul ol li ...
- Web GIS离线解决方案
1.背景 在离线环境下(局域网中)的GIS系统中如何使用地图?这里的地图主要指的是地图底图,有了底图切片数据,我们就可以看到地图,在上面加上自己的业务数据图层,进行相关操作. 要在离线环境下看到GIS ...