zoukankan      html  css  js  c++  java
  • Struts配置文件以Spring的方式实现自定义加载

    在使用struts时,我们需要在web.xml中配置过滤器,同时我们需要配置struts的配置文件路径来加载项目中struts的相关配置信息。如果我们不配置路径的话,Struts会有一些默认的加载路径,比如项目根路径下的名为struts.xml的配置文件。

    但在实际项目中,struts配置的文件比较多,也不可能都放在项目的根路径下,一般是放在一个统一的目录进行管理,如(StrutsCfg目录),当配置文件多的话,有一种方法是在sturts的拦截器配置一个配置项

      <param-name>config</param-name>

      <param-value>配置文件名字,多个以逗号隔开</param-value>

    这里需要注意一下,当手动配置的话,struts不会默认加载struts默认的配置了。如struts-default.xml,struts-plugin.xml。具体代码如下

    所以以这种方式来自定义加载struts的配置文件显然是不好的。所以我们采用第二种方式,以Spring的方式加载配置文件。

    首先我们需要为struts提供一个自定义的配置加载项类

    <filter>
    <filter-name>struts2</filter-name>
    <filter-class>
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
    </filter-class>
    <init-param>
    <param-name>configProviders</param-name>
    <param-value>这里自己定义一个类需要继承XmlConfigurationProvider</param-value>
    </init-param>
    </filter>
    我们自己定义一个类后,需要继承XmlConfigurationProvider,然后重写此方法

    可以看到方法的参数是一个字符串,这里我们用Spring提供的一个统一的资源访问接口ResourcePatternResolver,此接口支持classpath*这种通配符路径格式。所以项目如果有多个模板,就可以加载所有模块下的配置文件,具体用法如下

    这里的configFilePattern的路径为

    classpath*:strutsCfg/struts-*.xml

    总结:这种加载配置文件的方式即可以不影响struts默认配置文件的加载,也可以实现Spring通配符路径的加载,简单方便,也不用再struts的过滤器配置一大堆的配置了!
    
    
  • 相关阅读:
    ReentrantLock和AQS
    CAS
    java8中ConcurrentHashMap
    java8中的HashMap
    TCP和UDP
    慢查询日志和profiling
    explain的使用
    select、poll、epoll之间的区别
    I/O模型
    生产者-消费者模式
  • 原文地址:https://www.cnblogs.com/dreampig/p/9002770.html
Copyright © 2011-2022 走看看