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拦截器的理解

拦截器的一些认识: public class AuthInterceptor extends AbstractInterceptor { @Override public Stri...

struts2学习之运行流程及源码第一篇

初学Struts2框架,今天没事就写篇文章,当做学习笔记来用吧!众所周知,都知道Struts2是web层应用框架,那就从启动web应用加载Struts2开始来说。 Struts2配置文件加载顺序   ...

Struts2的运行流程

  • 2013年12月31日 14:54
  • 387KB
  • 下载

Struts2 运行流程分析

  • 2017年11月02日 16:27
  • 1.79MB
  • 下载

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

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

Struts2运行流程测试

  • 2013年12月31日 14:56
  • 144KB
  • 下载

struts2的工作流程和运行原理

先要参考srtuts的官方给出的图: 工作原理:                  1.(ActionContextCleanUp )首先客户端会发送一个请求,然后我们在web.xml配...

Struts2-运行流程分析

首先介绍几个原生的api: 相关的几个api: ActionMapping:Simple class that holds the action mapping information use...

Struts2运行流程:知识点

struts2执行流程介绍 1、客户端向Servlet容器(如Tomcat)提交一个请求 2、请求经过一系列过滤器(如ActionContextCleanUp过滤器等) 3、...
  • Jzq0006
  • Jzq0006
  • 2017年11月02日 16:40
  • 42

Struts2运行流程

这篇文章大部分是转载的,虽然不知道作者是谁,但是还是非常膜拜的,描述的非常清晰,我觉得要是自己去陈诉也没有这么好,中间我修改了最新的核心控制器名称,主要是struts2的核心控制器现在并不是Filte...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts学习总结(二)---Struts2的架构和运行流程
举报原因:
原因补充:

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