web容器启动之后,struts的核心过滤器会被加载,它的init方法会被执行。init方法里面加载了一些配置。
如下图:
点击initDispathcer:
点击init():
首先,看:
if (configurationManager == null) {
configurationManager = createConfigurationManager(DefaultBeanSelectionProvider.DEFAULT_BEAN_NAME);
}
configurationManager顾名思义,就是配置的管理者。它就是一个类,这个类在设计的时候会放很多的集合。当配置文件加载完,都放到这个集合里面。
点击:init_DefaultProperties(); // [1]
进入这个方法,确实,把一个东西add到configurationManager。
点击:new DefaultPropertiesProvider()
如类的注释所描述,加载默认的配置文件struts.properites
就是上面这个配置文件。这里面放的是常量。就是有很多变量它先把值写好了,一启动服务器会加载这些常量值。例如,struts.i18n.encoding=UTF-8。
接下来,继续往下看:
接下来,看第二个加载的配置 init_TraditionalXmlConfigurations(); // [2]
点击如上的常量:
我们先找到struts-default.xml
这里配置的是所有的核心的功能。
我们之前说过要经过一些拦截器:
这些拦截器就在struts-default.xml中:
比如,<interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>,这个是做数据的封装的。
struts.xml就是我们自己写的配置文件。
init_LegacyStrutsProperties(); // [3]加载自定义的struts.properties.
在src下,我们可以写一个struts.properties,struts会帮我们加载。但是,我们一般不这么做。
init_FilterInitParameters() ;[6] -- 加载web.xml
当我们启动服务器,服务器会加载web.xml,然后创建核心过滤器,init方法会执行,会加载很多配置文件。其中web.xml又会被加载一次。
我们使用struts,重点玩的就是struts.xml。如果,我们要修改一些常量,就在struts.xml中配置。
注意:后加载的配置文件会覆盖先加载的配置文件。
**入门总结之Struts2框架配置文件加载的顺序**
0. 需要掌握
* 加载了哪些个配置文件(重点的)
* 配置文件的名称是什么
* 配置文件的位置
* 配置文件的作用
1. Struts2框架的核心是StrutsPrepareAndExecuteFilter过滤器,该过滤器有两个功能
* Prepare -- 预处理,加载核心的配置文件
* Execute -- 执行,让部分拦截器执行
2. StrutsPrepareAndExecuteFilter过滤器会加载哪些配置文件呢?
* 通过源代码可以看到具体加载的配置文件和加载配置文件的顺序
* init_DefaultProperties(); -- 加载org/apache/struts2/default.properties
* init_TraditionalXmlConfigurations(); -- 加载struts-default.xml,struts-plugin.xml,struts.xml
* init_LegacyStrutsProperties(); -- 加载自定义的struts.properties.
* init_CustomConfigurationProviders(); -- 加载用户自定义配置提供者
* init_FilterInitParameters() ; -- 加载web.xml
3. 重点了解的配置文件
* default.properties -- 在org/apache/struts2/目录下,代表的是配置的是Struts2的常量的值
* struts-default.xml -- 在Struts2的核心包下,代表的是Struts2核心功能的配置(Bean、拦截器、结果类型等)
* struts.xml -- 重点中的重点配置,代表WEB应用的默认配置,在工作中,基本就配置它就可以了!!(可以配置常量)
* web.xml -- 配置前端控制器(可以配置常量)
* 注意:
* 前3个配置文件是struts2框架的默认配置文件,基本不用修改。
* 后3个配置文件可以允许自己修改struts2的常量。但是有一个特点:后加载的配置文件修改的常量的值,会覆盖掉前面修改的常量的值。
4. 总结(重点掌握的配置文件)
* 先加载default.properties文件,在org/apache/struts2/default.properties文件,都是常量。
* 又加载struts-default.xml配置文件,在核心的jar包最下方,struts2框架的核心功能都是在该配置文件中配置的。
* 再加载struts.xml的配置文件,在src的目录下,代表用户自己配置的配置文件
* 最后加载web.xml的配置文件
* 后加载的配置文件会覆盖掉之前加载的配置文件(在这些配置文件中可以配置常量)
5. 注意一个问题
* 哪些配置文件中可以配置常量?
* default.properties -- 默认值,咱们是不能修改的!!
* struts.xml -- 可以配置,开发中基本上都在该配置文件中配置常量
* struts.properties -- 可以配置,基本不会在该配置文件中配置
* web.xml -- 可以配置,基本不会在该配置文件中配置
* 后加载的配置文件会覆盖掉之前加载的配置!!