1.什么是Struts2
Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器,来建立模型和视图的数据交互,Struts2是Struts的下一代产品,是在Struts1和WebWork的技术基础上进行了合并的全新的Struts2框架,Struts2的体系结构和Struts1的体系结构差别巨大,Struts2是以WebWork为核心,采用拦截器的机制处理用户请求,这样的设计也使得业务逻辑控制能够与ServletAPI完全脱离开来,虽然从Struts1到Struts2有很大的区别,但是相对于WebWork而言,Struts2的变化很小,所以,Struts2可以理解为WebWork的更新产品。
2.Struts2的原理
1)客户端初始化一个指向Servlet容器的请求
2)这个请求经过一系列的过滤器,其中有个过滤器叫ActionContextCleanUp可选过滤器,这个过滤器对应Struts2和其他框架集成有很大的帮助
3)接着FilterDispatcher就被调用,FilterDispatcher询问ActionMapper来决定这个请求是否调用某个action类
4)如果ActionMapper决定调用某个action,FilterDispatcher把请求处理提交给ActionProxy
5)ActionProxy通过ConfigurationManager询问框架的配置文件,找到需要调用的action类,一般时从Struts.xml配置中读取
6)ActionProxy创建一个ActionInvocation的实例
7)Actioninvocation实例使用命名模式来调用,在调用action的过程前后,涉及到相关的拦截器(Intercepter)的调用
注:总的来说,
客户端——>发送请求——>servlet容器——>过滤器——>FilterDispacher——>ActionMapper——>ActionProxy——>ConfigurationManager——>ActionInvocation——>调用action
3.Struts2的底层
Struts开源架构很好的实现了MVC模式,MVC集Model-view-controller的缩写,是一种很常用的设计模式,MVC减弱业务逻辑接口和数据接口质检的耦合,以及让视图更加富于变化
MVC工作原理:
Struts是MVC的一种实现,它将Servlet和jsp标记用作实现的一部分,Struts继承了MVC的各项特性,并且根据J2EE的特点,做了相应的变化,
以下是Struts实现MVC的原理
控制:
有个Struts.xml配置文件,与之相关的的FilterDispatcher,称做为Struts2的神经中枢,
视图:
主要由jsp生成页面完成视图,Struts提供丰富的jsp标签库,这有利于在Struts2中,承担MVC中Controller角色的是一个Filter,叫做DispatcherFilter,DispatcherFilter是一个通用的组件,这个组件提供处理所有发送的Struts2的HTTP请求的入口点,它截取和分发这些请求到相应的动作类中,这些类都是action的子类,另外控件也负责相应请求参数的填充action属性,action类实现核心商业逻辑,最后把动作类把控制权传给后续的jsp文件,后者生成视图,所有的控制逻辑利用struts.xml文件来配置,