Struts学习总结(二)---Struts2的架构和运行流程

原创 2016年08月28日 22:27:42

日期: 2016-8-28


内容: Struts2的架构和运行流程


一、Struts2的系统架构

什么叫做Struts2的架构?在Struts2的官方文档里面有一张特别显眼的图片,这就是struts2的狗狗图,图片如下:

以下以简单的文字对这张图片作为一个初级的介绍,虽然这张图片基本涵盖了struts2的所有内容。

1、在这种系统架构图中一共分了几大块,彼此之间相互联系,图片中分四中颜色标注:


  • 橙色的部分是Servlet Filters,就是我们通常说的过滤器,在使用Struts2的过程中的所有请求都必须经过过滤器的处理。
  • 浅蓝色的部分是Struts Core,即Struts2的核心部分,是Struts2已经做好的功能模块,在我们实际开发的过程中通常不需要去改动的。
  • 浅绿色的是Intercepters,即Struts2的拦截器。Struts2为我们提供了很多的拦截器,可以用于完成我们日常开发的绝大部分功能,当然,我们也可以根据自己的需求去定义自己的拦截器,这个需要根据我们自己开发模块的复杂程度去自己定义。
  • 浅黄色的是User Created,即由开发人员创建的,包括的内容有struts.xml,Action,Template这些部分是每一个使用kStruts2开发的人员都必须会的。我们再开发的过程中基本上只涉及到这些地方的修改和配置。


2、Struts2的体系结构:

  1. 当web容器接收到一个请求的时候,它会将请求传递给一个标准的过滤器,其中包括ActionContextCleanUp过滤器和其他的过滤器(如集成SiteMesh的插件),这是非常有用的技术。接下来就需要调用FilterDispatcher,他将调用ActionMapper,来确定请求调用哪个Action,ActionMapper返回了一个收集了Action详细信息的ActionMapping对象。
  2. 接下来,FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(Coniguration Manager)从配置文件中读取配置信息,然后创建ActionInvocation对象实际上ActionInvocation处理过程就是Struts2处理请求的过程。在ActionInvocation被创建的同时,填充了需要的所有对象和信息,他在调用Action之前会调用所有的配置的拦截器。
  3. 一旦Action执行完成返回结果字符串,ActionInvocation负责查找结果字符串所对应的Result。一般Result会调用一些模板(JSP,HTML等)来呈现页面信息。
  4. 之后拦截器会被再次执行,执行的顺序与执行Action之前的顺序刚好相反,最后相应被返回给在web.xml中配置的那些过滤器(FilterDispatcher等)。


3、Struts2的各个模块的说明


Struts2中的各个模块各自是做什么的?有什么样的功能?都处于什么样的地位?下面跟着系统架构图的箭头一个一个的来查看。

  • FilterDispatcher:是整个Struts2的调度中心,根据ActionMapper的结果来决定是否处理请求,如果ActionMapper指出该URL应该被Struts2处理,那么他将会执行Action处理,并停止过滤器上还未执行的过滤器。
  • ActionMapper:提供HTTP请求与Action执行之间的映射,简单的说ActionMapper会判断这个请求是否应该被Struts2来处理,如果该请求应该被Struts2来处理,ActionMapper会返回一个对象来描述请求对应的ActionInvocation的信息。
  • ActionProxy:是一个特别的中间层,位于Action和xwork之间,使得我们有机会在将来引入更多的实现方式,比如通过WebService来实现。
  • Configuration Manager:是xwork配置的管理中心,简单说来就是可以把它看做struts.xml配置文件在内存中的对应;
  • struts.xml:是struts2的配置文件,主要负责URL和Action之间的映射关系配置等,以及执行Result页面跳转的基本信息。
  • ActionInvocation:真正调用并且执行Action,他拥有一个Action实例和这个Action所依赖的拦截器的实例,ActionInvocation会执行这些拦截器,Action以及相对应的Result。
  • Intercepter:拦截器是一些无状态的类,拦截器可以自动拦截Action,他们给开发者提供了再Action执行之前或者result执行之后执行一些功能代码的机会。类似于大家熟悉的javax.servlet.Filter。
  • Action:动作类是Struts2中的动作执行单元。用来处理用户请求并封装用户需要的数据返回给画面显示。
  • Result:就是不同视图类型的抽象封装模型,不同的视图类型会对应不同的result实现。Struts2支持多种视图模型,比如常用的jsp,FreeMaker等。
  • Template:各种视图类型的页面模板,例如,JSP就是一种模板页面视图。
  • Tag Subsystem:Struts2的标签库他抽象了三种不同的视图技术:JSP,Volecity,FreeMaker,可以在不同的视图技术中,几乎没有差别的使用这些标签。






版权声明:本文为博主原创文章,未经博主允许不得转载。

Struts2学习总结(1)--基本原理,开发步骤,配置详解

本文包括以下三个部分:1、模拟Struts2框架,了解基本原理。2、Struts2的开发步骤。3、Struts2的配置详解。是学习Struts2的入门知识。里面包含详细的代码示例。...
  • qq_29829081
  • qq_29829081
  • 2016年03月20日 18:55
  • 1510

Struts2学习第一天——struts2基本流程与配置

struts2框架 struts2快速入门 Struts2 处理流程 模仿struts2流程完成入门程序 struts2的流程分析以及工具配置 struts2配置(重点) 1.struts2配置文件加...
  • lutianfeiml
  • lutianfeiml
  • 2016年06月14日 14:48
  • 18778

Struts2的运行流程及其工作原理

Struts2是一套非常优秀的Web应用框架,实现优雅、功能强大、使用简洁。可以说是Struts2是一款非常成熟的MVC架构。 在我们学习Struts2时,最好是先学习它的运行流程、核心概念,从...
  • lijia791541916
  • lijia791541916
  • 2015年12月09日 16:42
  • 3078

Struts2工作原理和执行流程图

1、Struts2请求响应流程:   在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller、ActionProxy、ActionMapp...
  • snow_7
  • snow_7
  • 2016年05月27日 10:38
  • 9095

Struts2系统结构及运行原理(1)

一、架构图下边是一张Struts2的官方文档中的Struts2的构架图 二、各模块的简要分析(1)橙色是Servlet Filters,过滤连,所有的请求都要经过Filter的处理; (2)浅蓝色...
  • u010870518
  • u010870518
  • 2015年05月20日 11:42
  • 3749

Struts2学习知识点总结

1.全局的逻辑控制器为一个过滤器,负责过滤所有的请求。该过滤器引用的API类为     org.apache.struts2.disapatcher.FilterDispatcher   2.MVC:...
  • outlook008
  • outlook008
  • 2010年09月02日 22:06
  • 4485

STRUTS2学习(一)——入门程序及基本流程

STRUTS2学习(一)——入门程序及基本流程 1、摘要 主要讲述了Struts2的相关入门知识及客户端向web容器发出请求后在服务器端处理用户请求的大概流程。本文的开发环境为MyEclipse-10...
  • zhangxianfei_hust
  • zhangxianfei_hust
  • 2016年06月02日 23:21
  • 673

Struts2工作原理

Struts2工作原理 Struts2请求响应流程:   在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller、ActionProxy、Ac...
  • wuwenxiang91322
  • wuwenxiang91322
  • 2013年09月04日 16:18
  • 90873

struts2重要知识点总结(2)

Action的配置 的配置 通过上面的示例可以看出,Action需要在struts.xml中配置才可以使用,而且Action应该配置成为元素的子元素,那么元素的功能是什么呢? 元素可以把逻辑上相...
  • u013730093
  • u013730093
  • 2015年12月13日 13:54
  • 871

走进Struts2(一) — Struts2的运行流程及其工作原理

Struts2是一套非常优秀的Web应用框架,实现优雅、功能强大、使用简洁。可以说是Struts2是一款非常成熟的MVC架构。 在我们学习Struts2时,最好是先学习它的运行流程、核心概念,从中得到...
  • u013497151
  • u013497151
  • 2015年06月05日 10:10
  • 10175
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts学习总结(二)---Struts2的架构和运行流程
举报原因:
原因补充:

(最多只允许输入30个字)