深入struts2(三)---工作机制和运行流程图
1 工作原理
1.1 体系架构
图2.1 struts2.0体系架构图
1.2 工作机制
针对上节体系架构图,以下分步说明运行流程
Ø client初始化一个指向Servlet容器(比如Tomcat)的请求;
Ø 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其它框架的集成非常有帮助,比如:SiteMesh
Plugin);
注:从struts2.1.3后就不须要配置ActionContextCleanUp过滤器了,该过滤器的作用是清空值栈等,但struts会留下自己session和Attribute等
Ø 接着调用struts的StrutsPrepareAndExecuteFilter过滤器,StrutsPrepareAndExecuteFilter询问ActionMapper来决定这个请求是否须要调用某个Action;
备注:早期struts用FilterDispatcher过滤器,如今普遍都用StrutsPrepareAndExecuteFilter。 就名字而言,prepare与execute前者表示准备说指filterinit方法即配置导入;后者表示进行过滤指doFilter方法即request请求转发给相应action去处理
Ø 假设ActionMapper决定须要调用某个Action,StrutsPrepareAndExecuteFilter把请求的处理交给ActionProxy;
Ø ActionProxy通过Configuration Manager询问框架的配置文件,找到须要调用的Action类;
Ø ActionProxy创建一个ActionInvocation的实例。
Ø ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。
Ø 一旦Action运行完成,ActionInvocation负责依据struts.xml中的配置找到相应的返回结果。返回结果一般是(但不总是,也可能是另外的一个Action链)一个须要被表示的JSP或者FreeMarker的模版。在表示的过程中能够使用Struts2框架中继承的标签。在这个过程中须要涉及到ActionMapper。
1.3 执行顺序图
在整理该文档时候,网上发现例如以下图片,感觉画的非常清楚。特借来一用。
深入struts2(三)---工作机制和运行流程图的更多相关文章
- struts2的工作机制
struts2的工作机制 原文:http://eoasis.iteye.com/blog/642586 概述 本章讲述Struts2的工作原理. 读者如果曾经学习过Struts1.x或者有过Strut ...
- 分享知识-快乐自己:Struts2框架 工作原理及执行流程图(拦截器的使用)
Struts2 架构图: 1):提交请求 客户端通过 HttpServletRequest 向 Servlet (即Tomcat)提交一个请求. 请求经过一系列的过滤器,例如图中的 ActionCon ...
- Struts2的工作流程分析
Struts2的工作流程分析 Posted on 2011-02-22 09:32 概述 本章讲述Struts2的工作原理. 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验, ...
- 深入分析Java I/O的工作机制 (三)网络I/O的工作机制 很详细
3.网络I/O的工作机制 前言:数据从一台主机(服务端)发送到网络中的另一台主机(客户端)需要经过很多步骤:首先需要有相互沟通的意向.其次要有能够沟通的物理渠道(物理链路):是通过电话,还是直接面对面 ...
- Hadoop入门第三篇-MapReduce试手以及MR工作机制
MapReduce几个小应用 上篇文章已经介绍了怎么去写一个简单的MR并且将其跑起来,学习一个东西动手还是很有必要的,接下来我们就举几个小demo来体验一下跑起来的快感. demo链接请参照附件:ht ...
- java虚拟机学习-慢慢琢磨JVM(2-1)ClassLoader的工作机制
ClassLoader的工作机制 java应用环境中不同的class分别由不同的ClassLoader负责加载. 一个jvm中默认的classloader有Bootstrap ClassLoader. ...
- 大数据学习笔记——Spark工作机制以及API详解
Spark工作机制以及API详解 本篇文章将会承接上篇关于如何部署Spark分布式集群的博客,会先对RDD编程中常见的API进行一个整理,接着再结合源代码以及注释详细地解读spark的作业提交流程,调 ...
- 15 sql base line 工作机制
<个人Configuration> 正常配置一下, 就OK了, 不用理了, oracle 11g 默认启动 发展: .从Oracle的发展角度来看,估计这种方法是Oracle发展和改进的方 ...
- PHP自动加载__autoload的工作机制
PHP自动加载__autoload的工作机制 PHP的懒加载lazy loading 在 2011年11月12日 那天写的 已经有 4559 次阅读了 感谢 参考或原文 服务器君一共花费了 ...
随机推荐
- Android 推断SD卡是否存在及容量查询
首先要在AndroidManifest.xml中添加SD卡訪问权限 <!-- 在SDCard中创建与删除文件权限 --> <uses-permission android:name= ...
- 【C++基金会 06】explictkeyword
C++提供keywordexplicit,你应该不能阻止的转换构造隐式转换发生的同意.声明explicit的构造不能在一个隐式转换使用. 1.演示样例 我们先来看一段演示样例代码: class A { ...
- default argument given of parameter 的问题
今天写了一个类,当中的一个方法用到了默认參数,结果报了 "default argument given of parameter 的问题 " 错误. 类头文件的声明例如以下: v ...
- n每个计数的概率和发生骰子--动态规划
称号:该n骰子在地板上.所有点骰子的向上一面和一个S.进入n,打印S所有可能的值的概率. 声明思想非原创!仅仅因动态规划思想的使用非常好,记下. 分析:动态规划就是分阶段考虑问题.给出变量.找出相邻阶 ...
- Java Swing创建自定义闪屏:在闪屏上添加Swing进度条控件(转)
本文将讲解如何做一个类似MyEclipse启动画面的闪屏,为Java Swing应用程序增添魅力. 首先看一下效果图吧, 原理很简单,就是创建一个Dialog,Dialog有一个进度条和一个Label ...
- [Network]Transport Layer
1 Principles behind Transport Layer Services 1.1 Multiplexing/Demultiplexing Multiplexing at sender ...
- Vertica对于所计算的时间SQL声明大全
词:强.大.所有,强烈推荐 SQL语句 查询结果 select (timestamp '2005-01-17 10:00' - timestamp '2005-01-01'); 16 10:10 se ...
- WPF六个控制概述
在线演示:http://v.youku.com/v_show/id_XNzA0NjU1Mjk2.html 清晰版视频+代码下载:http://115.com/lb/5lbcftnrfo9s 一.简单介 ...
- FZU2126:消除类游戏(DP)
Problem Description S近期在玩一种游戏. 这样的游戏的规则是一个一个地往一个栈里放有颜色的球,当栈顶连续k个球颜色同样时.这k个球立马同一时候消失. 如今S已经往栈里放了n个球,他 ...
- jsoup分解HTML DOM
采用jsoup 分解HTML .使用和JS操作DOM分类似. 示例代码: import java.io.IOException; import org.jsoup.Jsoup; import org. ...