struts2框架调用流程

来源:互联网 发布:手机淘宝评论怎么改 编辑:程序博客网 时间:2024/05/10 11:31

1、当servlet容器收到一个请求后,将请求交给你在web.xml文件中配置的过滤器FilterDispatchet,调用它的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维护着自己的状态,所以它知道那些拦截器已经被执行,如果还有没有被执行的拦截器,就继续执行它的intercapt(invocation)方法。

9、如果拦截器都已经执行过了,就调用action实例的execute()方法(如果在struts.xml文件中没有被设置成其他方法的话)。

10、ActionInvocation根据action执行返回的结果码,查找对应的Result,调用Result的execute(invocation)方法,将结果页面呈现给用户。

11、ActionInvocation的invke()方法将控制权返回给拦截器映射中的最后一个拦截器,该拦截器完成所有必须的后期处理工作,然后从intercept(invocation)方法返回,允许前一个拦截器执行它自己的后处理工作。如此反复,知道所有的拦截器都成功返回。

12、ActionInvocation的invoke()方法执行完毕后,想ActionProxy返回一个String类型的结果码,最后,ActionProxy清理状态并返回。


0 0
原创粉丝点击