zoukankan      html  css  js  c++  java
  • 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对象负责。

  • 相关阅读:
    hdu 1213 (How Many Tables)(简单的并查集,纯模板)
    Android 开发 -------- 自己定义View 画 五子棋
    POJ 2472 106 miles to Chicago
    android application
    Effective C++:条款39:明智而审慎地使用private继承
    云计算统一办公运营平台服务能力设计方案
    LCA 近期公共祖先 小结
    MFC exe使用C++ dll中的std::string 崩溃
    函数调用堆栈图
    【cocos2d-js官方文档】二十、moduleConfig.json
  • 原文地址:https://www.cnblogs.com/XuGuobao/p/7406684.html
Copyright © 2011-2022 走看看