struts2----架构剖析

一 xwork2---struts2的基础

struts2框架有两部分组成,xwork和struts2。xwork是一个命令模式框架,他是struts2的基础。xwork提供很多核心功能IOC(控制反转)容器,强大的表达式语言、数据类型转换,验证和可插入的配置。xwork框架的核心包括action、拦截器、result。struts2扩展了这些概念的基础实现,用于支持web应用程序的开发。

在struts2中,拦截器是一个重要的概念。拦截器可以再action被调用之前和之后执行代码。struts2框架的大多数核心功能都是作为拦截器来实现的。像类型转换、对象组装、验证、避免表单重复提交、文件上传等,都是在拦截器的帮助下实现的。struts2的拦截器与xwork的拦截器之间的协作方式。

struts2拦截器工作原理

struts2与xwork之间的交互图

二 struts2的体系架构

一个请求在Struts2框架中的处理大概分为以下几个步骤:

  1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求;

  2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);

  3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

  4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;

  5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;

  6、ActionProxy创建一个ActionInvocation的实例。

  7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper。

时间: 2024-10-19 18:41:51

struts2----架构剖析的相关文章

struts2原理剖析

在使用struts之前,我们必须了解servlet的运行,因为任何一个J2EE框架都是支持servlet的. 而servlet的执行过程,简单的说如下: 1.服务器接收请求 2.经过一个过滤器链对请求进行处理 3.调用serlvet的doget或dopost方法 4.过滤器链对应答进行处理 6.返回用户 而过滤器和servlet,我们都可以在web.xml中进行配置. 那么,现在主流的struts又是如何工作呢. 我们观察一下servlet的执行过程,我们会发现,我们可以补充的部分就是servl

如何自学Struts2之Struts2架构和环境搭建[视频]

如何自学Struts2之Struts2架构和环境搭建[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",昨天晚上刚好有点时间,先做两个视频: http://v.youku.com/v_show/id_XODkyMTczMzMy.html 明天就回家过年了,家里没网络,等回来上海再继续弄吧,先给大家拜个早年,祝新春快乐,阖家幸福,事事如意!

VLC播放器架构剖析

VLC采用多线程并行解码架构,线程之间通过单独的一个线程控制所有线程的状态,解码器采用filter模式.组织方式为模块架构 模块简述:libvlc                  是VLC的核心部分.它是一个提供接口的库,比如给VLC提供功能接口:流的接入,音频视频的输出,插件管理,线程系统. interface           包含与用户交互的按键和设备弹出. Playlist               管理播放列表的交互,如停止,播放,下一个,或者随机播放. Video_output

HDFS架构剖析

HDFS架构核心内容: 一.NameNode/DataNode 二.数据存储副本 三.元数据持久化 四.数据模型 五.故障容错 具体讲解: 一.NameNode/DataNode HDFS采用Master/Slave架构,其集群由一个NameNode和多个DataNodes组成. NameNode是中心服务器,负责管理文件系统的名字空间(namespace)以及客户端的访问.DataNode负责管理它所在节点上的存储.用户能够通过HDFS文件系统的名字空间以文件的形式在上面存储数据. 对于内部存

SQLServer内核架构剖析 (转载)

SQL Server内核架构剖析 (转载) 这篇文章在我电脑里好长时间了,今天不小心给翻出来了,觉得写得很不错,因此贴出来共享. 不得不承认的是,一个优秀的软件是一步一步脚踏实地积累起来的,众多优秀的程序员呕心沥血,他们已经不是在简单的写代码,而是在创作一门艺术. 和前面提到的暴雪公司的发展相比他们有一个相同之处,即:他们只做经典.不能说他们集中的全世界最优秀的程序员,而实际上他们集中的是全世界最好的思想,并且付诸实践. 成功不是靠急于求成,而是靠远见.祝Microsoft SQL Server

《Netty5.0架构剖析和源码解读》【PDF】下载

<Netty5.0架构剖析和源码解读>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062545 内容简介 Netty 是个异步的事件驱动网络应用框架,具有高性能.高扩展性等特性.Netty提供了统一的底层协议接口,使得开发 者从底层的网络协议 (比如 TCP/IP. UDP) 中解脱出来. 就使用来说, 开发者只要参考Netty 提供的若干例子和它的指南文档,就可以放手开发基于 Netty 的服务端程序了. 在Java 社区,最知名的

机器学习平台mahout,推荐系统算法与架构剖析视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

【Struts2】剖析Struts2中的反射技术 ValueStack(值栈)

1,Struts2框架主要组件的处理流程 在说ValueStack之前,笔者先说一说Struts2中常用的组件,struts2中常用组件有strutsPrepareAndExecuteExceptionn,以及一般执行流程: 请求来进入 Filter 控制器 Filter 控制器创建 ValueStack 对象并初始化 Filter 控制器根据 struts.xml 调用 defaultStack 拦截器栈 Filter 控制器根据 struts.xml 调用 Action 处理 Filter

[转载]SQL Server内核架构剖析

原文链接:http://www.sqlserver.com.cn 我们做管理软件的,主要核心就在数据存储管理上.所以数据库设计是我们的重中之重.为了让我们的管理软件能够稳定.可扩展.性能优秀.可跟踪排错.可升级部署.可插件运行, 我们往往研发自己的管理软件开发平台.我们总是希望去学习别人的开发平台(如用友或金蝶或SAP),但我们却总是感叹管理软件业务处理细节繁多, 而数据库管理软件却简单的SELECT.INSERT.DELETE.UPDATE四个命令就搞定. 我们多希望有一天能做出一个架构,也可

SQLSERVER内核架构剖析 (转)

我们做管理软件的,主要核心就在数据存储管理上.所以数据库设计是我们的重中之重.为了让我们的管理软件能够稳定.可扩展.性能优秀.可跟踪排错. 可升级部署.可插件运行,我们往往研发自己的管理软件开发平台.我们总是希望去学习别人的开发平台(如用友或金蝶或SAP),但我们却总是感叹管理软件业 务处理细节繁多,而数据库管理软件却简单的SELECT.INSERT.DELETE.UPDATE四个命令就搞定.我们多希望有一天能做出一个架构,也 可以这么简单就搞定管理软件.我们往往研究别人的架构,却忘记了我们身边