Struts2的执行过程

Struts2执行过程:

1)当用户提交的时候,请求的URL:/helloworld/helloworldAction.action请求被Tomcat服务器接收到,Tomcat服务器会根据请求URL中的web上下文,也就是/helloworld,来选择处理这个请求的Web应用,那就是由helloworld这个web工程来处理这个请求;

2)Web服务器会读取helloworld这个工程的web.xml,在web.xml中进行配置,发现扩展名为.action的请求,由struts2这个过滤器来进行处理,根据Filter的配置,找到实际的类为FilterDispatcher Dispatcher [dɪˈspætʃə(r)]调度

3)Web容器会根据获取的FilterDispatcher这个类的实例,然后回调doFilter()方法进行真正的处理,FilterDispatcher作为前端控制器,是整个Struts的调度中心;

4)FilterDispatcher讲请求转发给ActionMapperActionMapper负责识别当前的请求是否需要Struts2做出处理。

5)ActionMapper告诉FilterDispatcher,需要处理这个请求,FilterDispatcher会停止过滤器链以后的部分,所以通常情况下:FilterDispatcher应该出现在过滤器联链的最后。然后建立一个ActionProxy对象,这个对象作为Actionxwork之间的中间层,会代理Action的运行过程。

6)ActionProxy对象被创建出来的时候,并不知道要运行哪个Action,他手里只有从FilterDispatcher中拿到的请求的URL。这时候,他去向ConfigurationManager询问到底要运行哪一个Action Configuration[kənˌfɪgəˈreɪʃn]配置

7)在服务器启动的时候,ConfigurationManager会一次性的将struts.xml文件中所有信息读到内存中,并缓存起来,以保证ActionProxy拿着来访问的URL向它询问要运行哪一个Action的时候,就可以直接匹配,查找并回答出来。

8)ActionProxy知道了需要运行的那个Action,相关的拦截器以及所有可能使用的result信息,就可以着手建立ActionInvocation对象了,ActionInvocation对象描述了Action运行的整个过程。 Invocation[ˌɪnvəˈkeɪʃn]调用。

注:Action运行绝不仅仅只是运行Action中的execute方法这么简单,还包其他部分,完整的调度过程由ActionInvocation对象负责。

posted @ 2017-08-21 21:06  XuGuobao  阅读(166)  评论(0编辑  收藏  举报