深入详解Struts2——struts2框架的调用流程

struts2调用的时序图如下所示:
这里写图片描述
1、当Servlet容器接收到一个请求后,将请求交给你在web.xml文件配置的过滤器FilterDispatcher,调用他的doFilter()方法
2、FilterDispatcher询问ActionMapper,以便确定这个请求是否有对应的action调用。
3、ActionMapper返回一个描述action调用的ActionMapping对象
4、FilterDispatcher调用Dispatcher类的serviceAction()方法
5、Dispatcher调用ActionProxy的execute()方法
6、ActionProxy设置ActionInvocation对象的执行上下文,然后调用其invoke方法
7、ActionInvocation的invoke方法从拦截器映射中查找尚未执行的拦截器,调用他的intercept(invocation)方法,并将自身对象引用作为参数传递给拦截器。
8、拦截器完成某些预处理工作后,反过来调用ActionInvocation的invoke方法,ActionInvocation维护者自己的状态,所以他知道哪些拦截器已经被执行,如果还没有执行的拦截器,就继续执行他的intercept(invocation)方法。
9、如果所有的拦截器都已经执行过了,就调用action实例的execute方法
10、ActionInvocation根据action执行返回的结果码,查找对应的Result,调用Result的execute(invocation)方法,将结果页面呈现给用户。
11、ActionInvocation的invoke方法将控制权返回给拦截器映射中的最后一个拦截器,该拦截器完成所有必须的后期处理工作,然后从intercept(invocation)方法返回,允许前一个拦截器执行他自己的后处理工作。如果反复,制动所有的拦截器都成功返回。
12、ActionInvocation的invoke方法执行完毕后,想ActionProxy返回一个String类型的结果码,最后,ActionProxy清理状态并返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值