原始内容:https://www.tutorialspoint.com/struts_2/basic_mvc_architecture.htm
架构(很重要!尤其是图!)
从一个比较高的层次来看,Struts2是一个pull-MVC(或者MVC2)框架。
Struts2的 Model-View-Controller 模式通过以下五个核心组件实现:
-
Actions
-
Interceptors
-
Value Stack / OGNL
-
Results / Result types
-
View technologies
Struts2和传统的MVC框架略有不同,尽管有一些重叠,在Struts2中,Action扮演的是模型的角色,而非控制器。
【注释】可以看到,setXxx()和getXxx()是一对的!
上图描绘了Struts2的高层次架构。控制器是通过Struts2 分派servlet过滤器以及拦截器进行实现,模型是通过Actions进行实现,而视图则是结果类型和结果的结合。值栈和OGNL提供公共的thread、linking以及与其他组件之间的集成。
除了上述的组件之外,还有许多配置相关的信息。例如web应用的配置,Actions的配置,拦截器的配置,results的配置等。
这仅仅只是Struts2 MVC模式的体系结构的一个概述,在之后的章节中,我们将详细了解各个组件。
请求的生命周期(重要!!!)
基于上图,我们可以很容易地描述Struts2中请求的生命周期:
- 用户发送一个请求给服务,期望获得某些资源(比如,页面)
- 过滤分派器(FilterDispatcher)查看这个请求,然后确定适当的Action.
- 通过验证、文件上传等方式来配置“拦截器(interceptors)”功能。
- 被选中的Action执行响应请求的操作
- 另外,如果需要的话,已配置的“拦截器”可以被用来做任何“后期处理”
- 最后,由视图显示结果并返回给用户。