Struts2请求流程(不明白的注释下)

在Struts2框架中的处理大概分为如下几个步骤 app

  1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求 框架

  2 这个请求通过一系列的过滤器(Filter)(这些过滤器中有一个叫作ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其余框架的集成颇有帮助,例如:SiteMesh Plugin) url

  3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否须要调用某个Action spa

说明:1>Dispatcher开始会调用init方法加载一些配置文件,例如default.properties\struts.properties\xwork.xmlxml

2>Dispatcher执行dofilter方法,ActionMapper会根据请求的url获得一个actionMapping,actionMapping包含了url的配置信息继承

  4 若是ActionMapper决定须要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 递归

3>Dispatcher执行最重要的方法serviceAction,会建立Actionproxy,在调用方法DefaultActionproxyFactory.createActionProxy建立actionProxy的过程当中,经过proxy.prepare()又建立了ActionInvocation.it

  5 ActionProxy经过Configuration Manager询问框架的配置文件,找到须要调用的Action类 io

  6 ActionProxy建立一个ActionInvocation的实例。 容器

  7 ActionInvocation实例使用命名模式来调用,在调用Action的过程先后,涉及到相关拦截器(Intercepter)的调用。 

4>proxy.execute()执行了invocation.invoke(),这个方法会循环调用Intercepter.递归调用,调用完后用invokeAction执行Action

  8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果一般是(但不老是,也可 能是另外的一个Action链)一个须要被表示的JSP或者FreeMarker的模版。在表示的过程当中能够使用Struts2 框架中继承的标签。在这个过程当中须要涉及到ActionMapper 

相关文章
相关标签/搜索