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 ...
随机推荐
- markdown编辑器sublime text3
安装包管理Package Control ctrl+`或者点击查看-->显示面板,复制下面的代码到面板里. import urllib.request,os; pf = 'Package Con ...
- MySQL · 答疑解惑 · MySQL 锁问题最佳实践
http://mysql.taobao.org/monthly/2016/03/10/ 前言 最近一段时间处理了较多锁的问题,包括锁等待导致业务连接堆积或超时,死锁导致业务失败等,这类问题对业务可能会 ...
- Cordova环境搭建 & HelloWorld
目前的手机APP有三类:原生APP,WebAPP,HybridApp:HybridApp结合了前两类APP各自的优点,越来越流行. Cordova就是一个中间件,让我们把WebAPP打包成Hybrid ...
- Merge K Sorted Arrays
This problem can be solved by using a heap. The time is O(nlog(n)). Given m arrays, the minimum elem ...
- mac pods 安装
CocoaPods的安装步骤: 1.先配置Ruby环境: 若已安装Ruby,请升级Ruby环境 sudo gem update --system 若没有安装,则请看下面, 以下代码区域,带有 $ 打头 ...
- Asp.net 解决下载乱码问题,支持火狐、IE、谷歌等主流浏览器
public static void DownFileStream(MemoryStream ms, string fileName) { if (ms !=Stream.Null) { ) { fi ...
- java工程积累——前台页面的统一校验
对比: 1,以前的页面验证代码 <span style="font-size:18px;">//为了验证就医单号是否为空 var isDBNull = ...
- 常用类string的用法
在Java中string是我们用的很多的一种类,下面就来说说string类中经常用到的一些方法. 1.string与数组相关的方法: 比如:string str = "fsafdsafdas ...
- 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
第一步: windows 8系统,运行aspx页面出现上述错误信息,解决办法如下: iis7 :控制面板->打开或关闭windows功能->Internet信息服务->万维网服务-& ...
- Spring学习(三)
1,Spring的事务管理机制 Spring事务管理高层抽象主要包括3个接口,Spring的事务主要是由他们共同完成的: l PlatformTransactionManager:事务管理器-主要用于 ...