Struts2中struts.xml文件的加载过程

1.启动tomcat过程中,加载web.xml文件。

2.找到web.xml中的org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter类。

3.在StrutsPrepareAndExecuteFilter中调用了init方法,创建一个了InitOperations()对象,并且调用了initDispatcher(config);方法。在class文件中的源码如下:

 public void init(FilterConfig filterConfig) throws ServletException {
        InitOperations init = new InitOperations();
        try {
            FilterHostConfig config = new FilterHostConfig(filterConfig);
            init.initLogging(config);
            Dispatcher dispatcher = init.initDispatcher(config);
4.在InitOperations类中调用了initDispatcher(config)方法,在该方法中又调用了Dispatcher的init方法,class文件中的源码如下:

 public Dispatcher initDispatcher( HostConfig filterConfig ) {
        Dispatcher dispatcher = createDispatcher(filterConfig);
        dispatcher.init();
        return dispatcher;

5.接下来我们跳到Dispatcher类中调用init()方法处,源码如下:

   public void init() {

    	if (configurationManager == null) {
    		configurationManager = createConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME);
    	}

        try {
            init_DefaultProperties(); // [1]
            init_TraditionalXmlConfigurations(); // [2]
            init_LegacyStrutsProperties(); // [3]
            init_CustomConfigurationProviders(); // [5]
            init_FilterInitParameters() ; // [6]
            init_AliasStandardObjects() ; // [7]

上面的源码调用了init_TraditionalXmlConfigurations()方法,接着进到该方法中:

    private void init_TraditionalXmlConfigurations() {
        String configPaths = initParams.get("config");
        if (configPaths == null) {
            configPaths = DEFAULT_CONFIGURATION_PATHS;
        }
在该方法中可以看到定义了一个配置文件路径,DEFAULT_CONFIGURATION_PATHS,然后继续跟踪源码。

在该类中源码如下:

 private static final String DEFAULT_CONFIGURATION_PATHS = "struts-default.xml,struts-plugin.xml,struts.xml";

说明此时加载了struts-default.xml,struts-plugin.xml,struts.xml三个文件。

注意:

1.struts.xml文件必须放在classpath的根目录下。

2.名字必须为struts.xml

3.因为整个加载过程写在了过滤器的init方法中,所以tomcat启动的时候就把该文件加载了。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值