方案一:
首先我们要明白struts2加载配置文件都是从它自己的jar包和\WEB-INF\classes两个默认的位置加载的,如果你想改变strusts2中的文件的默认加载路径,可以在web项目的web.xml配置过滤器的时候指定。
如(配置过虑器的部分代码):
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,../STRUTS-XML/struts.xml </param- value>
</init-param>
</filter>
我在这里是把struts.xml放在 WEB-INF\STRUTS-XML\struts.xml
上面加载struts.xml是使用的 相对路径(相对于 \WEB-INF\classes目录, ".."后退退到WEB-INF目录);
----------------------------------------------------------------------------------------------
如果 把struts.xml放在 src\STRUTS-XML\struts.xml 中,这时既可以使用相对路径,又可以使用绝对路径 ,分别如下:
绝对路径:<param-value>struts-default.xml,struts-plugin.xml,/STRUTS-XML/struts.xml </param- value> (这时“/”就是相当于classes目录)
相对路径:<param-value>struts-default.xml,struts-plugin.xml,STRUTS-XML/struts.xml </param- value> (这时是相对于\WEB-INF\classes目录)
####要注意的是,如果你设置了<param-name>config</param-name>参数,那么struts-default.xml等原来struts2默认加载的文件你也要指定,否则它好像不会自动加载,会出错
也可以加载到struts.xml中(<include file="struts-default.xml"></include>)
(另外 struts-default.xml,struts-plugin.xml 是不用特殊指定的 struts.xml放到根目录下就可以 在struts.xml 里include 其他的struts.xml 而struts.xml 主要是进行一些配置的(比如字符类型等))
3.而且使用<include file="../STRUTS-XML/user.xml"/>标签时也要系一个都要指定相对的路径和struts.xml指定一样
还有一种不用这样配置的方法就是使用<include file="/STRUTS-XML/user.xml"/>
也就是struts.xml放在默认的位置,只是其它的配置放到其它的地方
如:
- XML code
-
<struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <include file="STRUTS-XML/user.xml"/></struts>
我就是把user.xml文件放到了\WEB-INF\classes\STRUTS-XML目录下
这样也可以达到统一管理配置文件,也不用配置<param-name>config</param-name>参数
方案二:
和设置struts.properties的自定义路径相同:
博客地址:http://blog.sina.com.cn/s/blog_7ffb8dd50101402x.html