Struts2执行流程/配置文件加载顺序/架构相关描述


一丶为何设计配置文件加载

    Struts2框架起源,Struts2是一个基于MVC设计模式的web应用框架,它实质上相当于Servlet的功能.它是基于Struts1的基础上集合优秀的web框架WebWork采用拦截器的机制来处理用户请求.低耦合.

二丶Struts2的执行流程图

一个请求进行提交到服务器,Tomcat进行加载配置文件进行执行Struts2过滤器的拦截,访问到对应的Action类下对应的执行方法.当方法执行完后(在没有异常的情况下)将会返回一个返回集,根据Struts2的配置文件指定跳转到对应的页面或是其他Action.下图是Struts2的执行流程图.


这里写图片描述


三丶Struts2的架构


这里写图片描述

一个请求在Struts2框架中的处理大致分为以下几个步骤:

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

2、这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin);

3、接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请求是否需要调用某个Action;

4、如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy;

5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;

6、ActionProxy创建一个ActionInvocation的实例。

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

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


四丶Struts2的配置文件加载顺序


Struts2的核心过滤器主要负责请求分发,将获取到的请求进行转向指定的位置,过滤器是带有生命周期的对象,Struts2核心过滤器我们从web.xml中StrutsPrepareAndExecuteFilter的配置信息开始着手走。

1、在核心过滤器StrutsPrepareAndExecuteFilter类中找到init方法,并找到init.initDispatcher()方法,进入该方法下的 dispatcher.init()方法;我们可以看到Struts2在初始化的时候按顺序进行加载的文件的顺序:
init_DefaultProperties(); // [1]
init_TraditionalXmlConfigurations(); // [2]
init_LegacyStrutsProperties(); // [3]
init_CustomConfigurationProviders(); // [5]
init_FilterInitParameters() ; // [6]
init_AliasStandardObjects() ; // [7]

Struts2查询源代码加载配置文件执行顺序


上诉代码执行对应的加载配置文件的顺序:

1.init_DefaultProperties(); // [1]加载org.apache.struts2.default.properties的配置文件,配置的是Struts2的所有常量;

2.init_TraditionalXmlConfigurations(); // [2]
加载Struts-default.xml/struts-plugin.xml/struts.xml文件
作用:配置了bean,interceptor,result等。
位置:在struts的core核心jar包. 

3.init_LegacyStrutsProperties(); // [3]
加载用户自定义Struts.properties文件
struts2框架中所使用的插件的配置文件

4.init_CustomConfigurationProviders(); // [5]
加载用户配置的提供对象.


5.init_FilterInitParameters() ; // [6]
加载web.xml 文件

6.init_AliasStandardObjects() ; // [7]
加载标准对象

根据上面的配置文件我们可以得出Struts 2的配置文件加载顺序,如下:
1.default.properties
2.struts-defualt.xml
3.struts-plugin.xml
4.struts.xml //配置Action以及常量
5.struts.properties //配置常量
6.web.xml //配置核心过滤器以及常量

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值