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(三)---工作机制和运行流程图的更多相关文章

  1. struts2的工作机制

    struts2的工作机制 原文:http://eoasis.iteye.com/blog/642586 概述 本章讲述Struts2的工作原理. 读者如果曾经学习过Struts1.x或者有过Strut ...

  2. 分享知识-快乐自己:Struts2框架 工作原理及执行流程图(拦截器的使用)

    Struts2 架构图: 1):提交请求 客户端通过 HttpServletRequest 向 Servlet (即Tomcat)提交一个请求. 请求经过一系列的过滤器,例如图中的 ActionCon ...

  3. Struts2的工作流程分析

    Struts2的工作流程分析 Posted on 2011-02-22 09:32 概述 本章讲述Struts2的工作原理. 读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验, ...

  4. 深入分析Java I/O的工作机制 (三)网络I/O的工作机制 很详细

    3.网络I/O的工作机制 前言:数据从一台主机(服务端)发送到网络中的另一台主机(客户端)需要经过很多步骤:首先需要有相互沟通的意向.其次要有能够沟通的物理渠道(物理链路):是通过电话,还是直接面对面 ...

  5. Hadoop入门第三篇-MapReduce试手以及MR工作机制

    MapReduce几个小应用 上篇文章已经介绍了怎么去写一个简单的MR并且将其跑起来,学习一个东西动手还是很有必要的,接下来我们就举几个小demo来体验一下跑起来的快感. demo链接请参照附件:ht ...

  6. java虚拟机学习-慢慢琢磨JVM(2-1)ClassLoader的工作机制

    ClassLoader的工作机制 java应用环境中不同的class分别由不同的ClassLoader负责加载. 一个jvm中默认的classloader有Bootstrap ClassLoader. ...

  7. 大数据学习笔记——Spark工作机制以及API详解

    Spark工作机制以及API详解 本篇文章将会承接上篇关于如何部署Spark分布式集群的博客,会先对RDD编程中常见的API进行一个整理,接着再结合源代码以及注释详细地解读spark的作业提交流程,调 ...

  8. 15 sql base line 工作机制

    <个人Configuration> 正常配置一下, 就OK了, 不用理了, oracle 11g 默认启动 发展: .从Oracle的发展角度来看,估计这种方法是Oracle发展和改进的方 ...

  9. PHP自动加载__autoload的工作机制

    PHP自动加载__autoload的工作机制 PHP的懒加载lazy loading 在 2011年11月12日 那天写的     已经有 4559 次阅读了 感谢 参考或原文   服务器君一共花费了 ...

随机推荐

  1. 配置Tomcat出现Unsupported major.minor version 51.0

    在配置tomcat时,配置好jdk1.6,下载的tomcat8.0,结果执行start-up.bat,总是一闪而过,网上查了大量的资料,都说是可能是jdk没配置好,但实际上jdk的环境变量设置正常,后 ...

  2. android 处理器crash刊物

    日志记录程序是为了方便各种异常情况,为了方便日后的维修方案进行维修,程序无法百分百健康,完美,有必要保存在日志中代码.易于维护.Java了一个接口UncaughtExceptionHandler,Th ...

  3. 与我一起extjs5(04--MVVM简要说明财产)

    与我一起extjs5(04--MVVM简要说明财产)         以下我们来看一下自己主动生成的代码中的MVVM架构的关系. Main是一个可视的控件,MainController是这个控件的控制 ...

  4. Ubuntu 14.04 Android 使用Maven一个 用例project

    在说明书前面描述SDK通过使用Ant发展. 本文试图在此基础上使用Maven发展. 在这里,我们需要使用maven-android-plugin. 在本文中,参考官方文件: https://code. ...

  5. JavaScript 初识Promise 对象

    什么是Promise? 其实, Promise就是一个类,而且这个类已经成为ES6的标准,是 ECMAScript 6 规范的重要特性之一.这个类目前在chrome32.Opera19.Firefox ...

  6. tomcatserver解析(六)-- Acceptor

    Acceptor负责用来管理连接到tomcatserver的数量,来看看Acceptor在tomcatserver中的应用,是怎样实现连接管理的,socket连接建立成功之后,是怎样实现内容的读写的( ...

  7. 他们控制的定义-DragButton

    一个.叙述性说明 可拖动Button 两.无图无真相 这是用在实际工程效果图.和demo不太一样. 三.源代码 https://github.com/mentor811/Demo_DragButton ...

  8. NSIS:卸载加密码示例

    原文 NSIS:卸载加密码示例 最近有几个同学问我关于卸载时加密码的问题,其实很简单,懂点基础就可以根据安装加密码那篇文章http://www.flighty.cn/html/bushu/201009 ...

  9. document.all使用

    document.all 一个. document.all它是在页面中的所有元素的集合.例如:      document.all(0)一个元素 二. document.all能够推断浏览器是否是IE ...

  10. Objective-C基调(4)Category

    OC它提供了一种不同的方式--Category,可以动态地添加新的行为已经存在的类(方法),这确保了较小的类的原始设计,然后逐渐加入扩展. 正在使用Category扩张的上课时间,你并不需要创建一个子 ...