1. 一个请求在Struts2框架中的处理步骤:

a) 客户端初始化一个指向Servlet容器的请求;

b) 根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助(SiteMesh Plugin),主要清理当前线程的ActionContext和Dispatcher;

c) 请求经过插件过滤器,如:SiteMesh、etc等过滤器;

d) 请求经过核心过滤器FilterDispatcher,执行doFilter方法,在该方法中,询问ActionMapper来决定这个请求是否需要调用某个Action;

e) 如果ActionMapper决定需要调用某个Action,则ActionMapper会返回一个ActionMapping实例(存储Action的配置信息),并创建ActionProxy(Action代理)对象,将请求交给代理对象继续处理;

f) ActionProxy对象根据ActionMapping和Configuration Manager询问框架的配置文件,找到需要调用的Action类;

g) ActionProxy对象创建时,会同时创建一个ActionInvocation的实例;

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

i) 一旦Action执行完毕,ActionInvocation实例负责根据struts.xml中的配置创建并返回Result。Result通常是一个需要被表示的JSP或者FreeMarker的模版,也可能是另外的一个Action链;

j) 如果要在返回Result之前做些什么,可以实现PreResultListener接口,PreResultListener可以在Interceptor中实现,也可以在Action中实现;

k) 根据Result对象信息,生成用户响应信息response,在生成响应过程中可以使用Struts2 框架中继承的标签,在此过程中仍会再次涉及到ActionMapper;

2. Struts2请求处理示意图:

下面是从Iteye上找的downpour博客中的一幅图,在此贴出他的博客地址http://downpour.iteye.com,里面有一个struts2的系列,自我感觉非常不错

这张XWork的宏观示意图是整个XWork乃至整个Struts2的核心。此图内涵丰富,几乎涵盖了XWork的元素构成、XWork中元素的调用关系、XWork的执行层次以及XWork与外部调用接口之间的关系等所有XWork框架的核心内容。

最新文章

  1. C# 本质论 第二章 数据类型
  2. Ignite安装配置——中篇
  3. javascript数据结构与算法-- 二叉树
  4. Java程序员必须熟知的十项技术
  5. IOS Animation-CABasicAnimation例子(简单动画实现)
  6. Win7系统中提示:本地无法启动MySQL服务,报的错误:1067,进程意外终止的解决方法。
  7. 利用html5调用本地摄像头拍照上传图片
  8. 助手系列之python的FTP服务器
  9. hdu 1213
  10. (JAVA版)冒泡排序
  11. CodeForces 10D. LCIS 最长公共上升子序列模板题 + 打印路径
  12. YII 实现布局
  13. React:入门计数器
  14. 在idea中,mavne项目使用mybatis-generator-maven-plugin自动生成实体了的时候,在maven插件里面始终不显示
  15. mysql实现IP与整形互转
  16. AutoCAD 凸度(bulge)的概念及使用WPF函数画图
  17. slf4j 和 log4j合用的(Maven)配置
  18. No result defined for action com.nynt.action.ManageAction and result input问题
  19. 每日英语:Mercedes Sheds Its 'Old' Design
  20. iOS's GCD Note

热门文章

  1. 【BZOJ2242】[SDOI2011] 计算器(数学模板三合一)
  2. 将数据库数据显示到TreeView控件中
  3. Java 发送 Http请求工具类
  4. C++unsigned char和char区别
  5. DOTA自走棋卡牌及搭配阵容
  6. c++question 004 c++基本数据类型有哪些?
  7. 用dom1来实现,根据光标移动自动给表单加上背景色,光标移开自动去除背景色
  8. pycharm 语言配置
  9. (转)Windows 支持 DirectX 和 OpenGL,为什么大多数 PC 游戏还是 DirectX 开发?
  10. JS大小转化B KB MB GB的转化方法