Struts2工作原理和执行流程图

澳门新浦京8455com 3

一、Struts2的拍卖流程:

在struts2的选取中,从客户央浼到服务器重临相应响应给客商端的进度中,满含了非常多组件如:Controller、ActionProxy、ActionMapping、Configuration
Manager、ActionInvocation、Inerceptor、Action、Result等。上面依据 struts2.0系统澳门新浦京8455com,架构图来深入分析那个零件之间的关系。

  •  客商端发生一个HttpServletRequest的要求,该诉求被提交到一层层的正统过滤器(Filter)创立链中(如ActionContextCleanUp:它根本是理清当前线程的ActionContext、Dispatcher,FilterDispatcher首即使由此ActionMapper来决定供给调用那些Action,FilterDispatcher是调整器的主导,也是MVC中央调控制层的主干建立)。
  • 主干调控器建立FilterDispatcher依照ActionMapper中的设置取得是或不是要求调用某些Action建设构造来管理那些HttpServletRequest央求,假若ActionMapper决定调用有些Action创立,FilterDispatcher主题调控器建构就能把诉求的管理权委托给ActionProxy创建
  • ActionProxy建构通过Configuration
    Manager建设布局得到Struts2框架的配备文件struts.xml,最终找到必要调用的对象Action建立类,然后ActionProxy建立就成立出二个贯彻了命令形式的ActionInvocation类的对象实例类的指标实例(那几个历程包含调用Anction创立自身早先调用多少个的拦截器组建的before()方法 )同期ActionInvocation创建通过代理方式调用指标Action创设。可是在调用在此之前ActionInvocation创设会基于布置文件中的设置项目加载与指标Action营造相关的全部拦截器创设(Interceptor)。
  • 一旦Action创建进行实现,ActionInvocation创设将基于开拓人士在Struts2.xml布置文件中定义的相继配置项目得到对象的回到结果–为这些Action创立的结果码(多少个像SUCCESS,INPUTState of Qatar然后依照该再次来到的结果调用指标JSP页面以落到实处展现输出。
  • 最后种种拦截器建设构造会被重新执行(但是各样和早先时反而,并调用after()方法),然后乞求最终被重临给系统的安顿文件中配置的其余过滤器,假设已经安装了ActionContextCleanUp过滤器,那么FilterDispatcher就不会清理在ThreadLocal目的中保留的ActionContext音讯。若无设置ActionContextCleanUp过滤器,FilterDispatcher就能够去掉掉全部的ThreadLocal对象。

澳门新浦京8455com 1

一发清楚的来讲就是:

    1. 客商端开端化多少个照准Servlet容器(比如汤姆cat)的呼吁(客商端提交贰个HttpServletRequest央浼。)
    2. 伸手被交付到一星罗棋布的过滤器(Filter)。如(ActionContextCleanUp、其余过滤器(SiteMesh等)、
      FilterDispatcher。注意:这里是有各样的,先ActionContext
      CleanUp,再别的过滤器(Othter
      Filters、SiteMesh等),最后到FilterDispatcher。FilterDispatcher是调控器的大旨,就是MVC的Struts
      2落成中央调整制层(Controller)的主干。
    3. FilterDispatcher询问ActionMapper是还是不是须要调用某些Action来拍卖这些(HttpServlet
      Request)要求,假使ActionMapper决定要求调用某些Action,FilterDispatcher则把哀求的拍卖交给ActionProxy。
    4. ActionProxy通过Configuration
      Manager(struts.xml)询问框架的结构文件,找到须求调用的Action类。
    5. ActionProxy创造三个ActionInvocation实例,同不时间ActionInvocation通过代办方式调用Action。但在调用在此之前,ActionInvocation会依据布署加载Action相关的保有Interceptor(拦截器)。
    6. Action施行落成后,ActionInvocation负担依据struts.xml中的配置找到相应的回来结果result。

1.客商端开端化三个针对servlet容器的央浼。

澳门新浦京8455com 2

2.伸手经过一雨后春笋的过滤器(ActionContextCleanUp、SiteMesh)

 

3.FilterDispatcher被调用,并询问ActionMapper来决定那一个央求是不是必要调用有些Action

4.ActionMapper决定要调用那么些Action,FilterDispatcher把央浼提交ActionProxy。

  1. ActionProxy通过Configurate
    Manager询问Struts配置文件,找到要调用的Action类

  2. ActionProxy成立叁个ActionInvocation实例

  3. ActionInvocation实例使用命令格局来调用,回调Action的exeute方法

8.
一旦Action实践完结,ActionInvocation负担依照Struts.xml的配置重返结果。

二、相比较根本的类的介绍:

ActionMapper其实是HttpServletRequest和Action调用央浼的贰个炫人眼目,他挡住了Action对于Request等Java
servlet类的依赖。Struts第22中学它的暗中认可实现类是DefaultAtionMapper,ActionMapper极大的用途可以遵照本人的急需来设计url格式,它和睦也许有Restful的现实性完成。

ActionProxy和ActionInvocation:

Action的贰个代理,由ActionProxyFactory创设,它本人不包涵Action实例,暗中认可实现DefaultActionProxy是由ActionInvocation持有Action实例。ActionProxy成效是何许获得Action,无论是地方照旧长途。而ActionInvocation的功用是怎么样实践Action,拦截器的职能就是咱ActionInvocation中落到实处的。

ConfigurateProvider和Configuration

ConfigurationProvider就是Struts2中布署文件的深入分析器,Struts第22中学的配置文件根本是贯彻XmlConfigurationProvider及其子类StrutsXmlConfigurationProvider来解析。

Struts2伸手管理暗暗表示图:

澳门新浦京8455com 3

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图