一、流程图

  

(转)

二、流程详解

  1、服务器传递来的请求,通过ActionContextClearUp、other filters、最后到达StrutsPrepareAndExecuteFilter

  2、StrutsPrepareAndExecuteFilter 向 ActionMapper 询问,来决定这个请求是否需要调用某个Action

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

  4、ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的Action类 ,这里,我们一般是从struts.xml配置中读取(也可以通过注解)

  5、ActionProxy创建一个ActionInvocation的实例

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

三、核心类或接口

  1、ActionConfig:负责从struts.xml文件中读取配置;

  2、ActionSupport:我们自己实现的Action类一般都继承ActionSupport类;

  3、ActionContext:是Action运行的环境,为Action类提供一些信息;

  4、ActionProxy:是如何获取Action;

  5、ActionInvocation:是如何执行Action。

四、ActionInvocation Action调度者

  1、对如何执行Action进行了封装

  2、ActionInvocation是 Xworks 中Action调度的核心。而对Interceptor 的调度,也正是由ActionInvocation负责

  3、ActionInvocation 是一个接口,而DefaultActionInvocation 则是Webwork 对ActionInvocation的默认实现

  4、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。

    在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper

五、ActionProxy Action代理

  1、对如何根据请求中的URL查找Action进行了封装

  2、所有指向Action的Http请求,共用一个ActionProxy

Struts2 流程原理的更多相关文章

  1. Struts2工作原理

    Struts2工作原理 Struts2请求响应流程: 在struts2的应用中,从用户请求到服务器返回相应响应给用户端的过程中,包含了许多组件如:Controller.ActionProxy.Acti ...

  2. 漂亮回答面试官struts2的原理

    众所周知,Struts2是个非常优秀的开源框架,我们能用Struts2框架进行开发,同时能快速搭建好一个Struts2框架,但我们是否能把Struts2框架的工作原理用语言表达清楚,你表达的原理不需要 ...

  3. 【Java EE 学习 54】【OA项目第一天】【SSH事务管理不能回滚问题解决】【struts2流程回顾】

    一.SSH整合之后事务问题和总结 1.引入问题:DAO层测试 假设将User对象设置为懒加载模式,在dao层使用load方法. 注意,注释不要放开. 使用如下的代码块进行测试: 会报错:no sess ...

  4. typecho流程原理和插件机制浅析(第二弹)

    typecho流程原理和插件机制浅析(第二弹) 兜兜 393 2014年04月02日 发布 推荐 1 推荐 收藏 14 收藏,3.7k 浏览 上一次说了 Typecho 大致的流程,今天简单说一下插件 ...

  5. typecho流程原理和插件机制浅析(第一弹)

    typecho流程原理和插件机制浅析(第一弹) 兜兜 393 2014年03月28日 发布 推荐 5 推荐 收藏 24 收藏,3.5k 浏览 虽然新版本0.9在多次跳票后终于发布了,在漫长的等待里始终 ...

  6. Struts2流程

    Struts2流程 1.client浏览器初始化时发出HTTP请求 2.依据web.xml配置,上述请求被FilterDispatcher接收 3.依据struts.xml配置,找到须要调用的Acti ...

  7. 小睿开始呼叫用户,然后FS怎么跟用户交互的整个流程原理

    学习从小睿开始呼叫用户,然后FS怎么跟用户交互的整个流程原理;     1.小睿向欣方新发起呼叫请求;     2.欣方新可以通过线路发起SIP协议请求,来呼叫用户;     3.当用户接通后,将建立 ...

  8. Hibernate、Spring和Struts2工作原理

    Hibernate.Spring和Struts2工作原理 博客分类: Java 基础 工作HibernateSpringMVCStruts  Hibernate.Spring和Struts2工作原理  ...

  9. Struts2工作原理和核心文件

    一.Struts2工作原理 如下图: 二.Struts2配置文件 1.web.xml 任何MVC框架都需要与Web应用整合,这就不得不借助于web.xml文件,只有配置了web.xml文件的Servl ...

随机推荐

  1. C#_选择结构,Console的应用,数据类型转换

    1:先看一个顺序结构编程,代码如下: using System; using System.Collections.Generic; using System.Linq; using System.T ...

  2. 如何选CDN:互联网大直播时代的CDN选择指南

    转: 如何选CDN:互联网大直播时代的CDN选择指南 from:  http://www.chnvideo.com/blog-classic-cdn.html SRS 编码器   如何选CDN:互联网 ...

  3. Python——私有化 和 属性property

    Python——私有化 和 属性property 一.私有化 xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 ...

  4. Android屏幕横竖屏切换和生命周期管理的详细总结

    一般的我们去切换屏幕方向都是不希望Activity被重新创建,这时就需要对一些属性进行设置,或者使用代码设置.        今天想学一下Android屏幕横竖屏切换,但是网上很多知识不准确或不正确, ...

  5. 关于go module

    从Go 1.11开始引入module,用于版本管理. 通过使用module,工程目录的位置不用必须放在GOPATH下. 当前版本是1.13,下文中将以Go1.13为例介绍module. 在Go 1.1 ...

  6. [spring mvc][转]<mvc:default-servlet-handler/>的作用

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

  7. 基于spring reactor3构建的即时通讯api。

    欢迎阅读Rmessage文档 技术栈 Rmessage是采用Reactor3,基于reactor-netty项目构建的实时消息推送api. 什么是Reactor3? Reactor 是一个用于JVM的 ...

  8. JavaScript抽象语法树英文对照

    type:"Program" //顶级对象类型 type:"Identifier" // 标识符 type:"FuncationDeclaration ...

  9. 连载二:RobotFramework+Svn+Jenkins集成测试

    使用SVN和Jenkins完成脚本的持续集成测试 目标: 1)使用svn管理脚本: 2)使用jenkins执行脚本: 3)在jenkins中配置svn自动获取最新的脚本执行: 步骤: (1)安装Jen ...

  10. PJzhang:如何缓解Mimikatz从Windows2008 R2内存中读取域控密码?

    猫宁!!! 参考: https://xz.aliyun.com/t/4180 https://www.anquanke.com/post/id/156299 https://www.cnblogs.c ...