struts2 配置文件放置在指定的目录

最近遇到一个比较头大的问题,就是在项目的src下配置文件太多了,于是想把struts的配置文件放在专门的目录下,但是建立好目录之后,struts.xml就不被加载,百度了下,遇到这样问题的兄弟还不少,于是按照百度的指点,尝试了下:

在web.xml中这样设置
	<filter>
		<filter-name>struts</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,config/struts.xml搜索
			</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>struts</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping> 
必须把struts-default.xml,struts-plugin.xml一起添加。
为什么要将struts-default.xml,struts-plugin.xml这两个文件一起添加呢?原来struts默认加载classpath路径下的配置文件,也就是说web.xml中的config默认是加载类路径下的配置文件,现在修改了config的值,那么默认的设置就不再起作用了,若单纯的指定config/struts.xml,那么struts就认为只有配置文件config/struts.xml,这样一来它原本依赖的另外两个文件也就不存在了,因此会出现找不到action的局面。


难道只能在config参数中指定struts指定的struts-default.xml,struts-plugin.xml吗?其实,如果只是指定config/struts.xml不加另外两个文件的话启动就会报错,看似只能在config中指定了?如前面所说,config改变了默认的加载选项,只是指定struts.xml确实有失妥当,但是可不可以让struts在加载struts.xml的时候找到另外两个文件呢?

于是尝试把init-param配置项修改为

<init-param>
			<param-name>config</param-name>
			<param-value>
				config/struts.xml搜索
			</param-value>
</init-param>
同时在struts.xml中添加

<include file="struts-default.xml" />
<include file="struts-plugin.xml" />

启动tomcat,发现没有问题,同时访问项目,没有问题。加载默认配置文件的问题得到解决。


继续尝试,既然struts默认加载的是类路径下的配置文件,那么是不是可以建立一个和src等同的想过的资源文件架来作为配置文件呢?

于是在项目下建立一个SourceForder,命名为configFolder,将struts.xml放到该文件夹下,同时删除 <init-param> 配置项,启动tomcat,正常,访问项目,没有问题。


于是,关于struts存放路径的问题得到验证和解决,写下这片文章,留下个纪念。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值