Struts2是由传统的Struts1和WebWork两个经典的MVC框架发展起来的,无论是从Struts2设计的角度来看,还是从Struts2在实际项目中的易用性来看,Struts2都堪称是一个非常优秀的MVC框架。
与传统的Struts1相比,Struts2允许使用普通的、传统的Java对象作为Action;Action的execute()方法不再与Servlet API耦合,因而更易于测试;支持更多的视图技术;基于AOP思想的拦截器机制,提供了极好的可扩展性;更强大、更易用的输入校验功能;并且将Ajax技术整合到了框架里面等等,这些都是Struts2具有更大的吸引力的原因所在。
下面我们来看一张经典的Struts2架构图:
所有请求被Struts2核心控制器FilterDispather拦截
根据ActionMapper提供的信息决定如何进行下一步
ActionMapper主要依赖Struts2的配置文件struts.xml
接下来为每个Action创建Action代理类ActionProxy
执行ActionProxy的execute()方法
在执行execute()方式时会逐个执行Struts2中的拦截器
执行完成拦截器后才会真正执行目标Action
目标Action需要返会转向的视图名称
<