前言:
struts2是基于WebWork开发的,要注意的是它不是基于struts1的开发,是WebWork的升级和扩展,综合了两者的优势。
struts2是一个相对流行的MVC框架,它对应的含义分别为:
M:JavaBean+ModelDriver
V:jsp+OGNL
C:anction类
学习struts之前先建安了解下WebWork的流程图,如下图所示:
正文:
先了解Struts2内部执行过程如下图所示:
1. 客户端初始化一个请求,用户请求数据封装到request对象中
2.请求经过一系列的核心过滤器
3.FilterDispatcher调用动作映射类ActionMapper,确认是否要调用Action类
4.返回信息
5.如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy
6.ActionProxy通过Configuration Manager询问框架的配置文件struts.xml,找到需要调用的Action类
7.返回信息
8.ActionProxy创建一个ActionInvocation的实例,使用命名模式来调用,在调用Action的过程前,经过一系列的拦截器
9.执行Action动作方法
10.一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果 。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。 在表示的过程中可以使用Struts2 框架中继承的标签。 在这个过程中需要涉及到ActionMapper
11.响应结果通过配置的web.xml的过滤器
12.封装响应到response对象
一个简单的struts2例子: