Struts2框架由两部分组成:XWork2和Struts2。Xwork是一个命令模式框架,它是Struts2的基础。
?
Xwork核心功能:
1、IoC容器
2、表达式语言(OGNL)
3、数据类型转换
4、验证
5、可插入的配置
......
?
Xwork的核心概念:
1、action
2、拦截器(Interceptor)-- 可在action调用之前和之后执行代码
3、result
Struts2扩展了这些概念的基础实现。
?
?
用到拦截器的地方:
1、类型转换
2、对象组装
3、验证
4、避免表单重复提交
5、文件上传
......
?
?
Struts2框架中的所有对象(action、result、interceptor等)都是通过ObjectFactory创建的。
?
Struts2的体系结构:
调用流程:
?
HTTP请求 -->
--> ActionContextCleanUp过滤器(集成SiteMesh时会用到)
--> 其他过滤器
--> FilterDispatcher(必须)
--> FilterDispatcher轮询ActionMapper,有Action可以调用
--> ActionProxy
--> Configuration Manager读取struts.xml
--> ActionProxy创建ActionInvocation?
--> ActionInvocation调用配置的拦截器?
--> 拦截器1
-->?拦截器2?
-->?Action?
-->?Result
-->?Result调用JSP或FreeMarker模版
-->?拦截器2?
--> 拦截器1
-->?FilterDispatcher?
-->?其他过滤器?
-->?ActionContextCleanUp过滤器
--> 最终结果
?