struts2改变配置文件路径的一系列问题

这几天,接到一个简单的项目,本来在公司实习用的是struts1.x的版本,不过后来自己想想,还是struts2.x功能要强大一点,没有公司已有的各色各样的组建,自己开发的话,用struts2.x效率更好些。可惜啊,很久没有用struts2.x了,很多东西都要重新复习一次。同时,在搭建struts应用的时候,遇到了很多之前没有遇到的问题,现在我把问题都罗列一下,希望可以帮助大家。

1.struts2.x配置文件的默认存放路径是在/WEB-INF/classes目录下,也就是说,把struts.xml放在src的目录下。

 

2.如果要修改struts2.x配置文件的存放位置,需要几个步骤:

 2.1在原有的filter中加入一个init-param标签,具体配置如下:

     <filter>
        <filter-name>controller</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>modules/struts.xml</param-value>
        </init-param>
     </filter>

 2.2 在struts.xml文件中添加如下代码,添加代码的原因就是,你没有用struts2的默认路径(或者这就是不听话的代价吧。后面还有更多的代价)

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

   如果不添加这段代码,会出现类似下面的错误:(找不到配置文件里面的action类,不知道你看到下面代码会想到什么,我的第一感觉就是检查有没有拼写错误,如果没有拼写错误,跟住....头大了...不知道哪里下手....答案就在这里)

Caused by: Action class [xxxAction] not found - action - file:....../resources/modules/struts.xml:7:65

 

3.如果要把一个庞大的struts.xml配置文件分成几个单独的配置文件,可以用<include file="...">标签。如果你按照普通的方式把文件路径写入file属性中,没有意外的话,应该会报错。这个问题,我搞了很久才想明白,跟struts2的默认配置路径有关,所有配置文件的默认路径都是/WEB-INF/classes,要记住这点,明白了之后,应该就知道怎么改了。想到了吗?假如你的子配置文件的路径是 /WEB-INF/classes/aa/bb/cc/struts-config.xml的话,file属性的值应该写:aa/bb/cc/struts-config.xml。赶快试试吧。

 

4.好了,讲好struts2跟spring整合了。网上很多朋友,甚至连strut2 in action 都是这样教你整合这两个框架的。

第一:假如spring-core.jar、spring-web.jar、spring-web.jar、spring-context.jar、struts2-spring-plugin.jar

第二:在struts.xml中加入:<constant name="struts.objectFactory" value="spring" />

完成!

事实上,这种情况只针对struts.xml放在默认路径。

如果你修改了配置文件的存放路径的话,上面的步骤还是要做足,不过,当你以为成功的时候,实际上应该会报一个错误,说找不到objectFactory的对象spring。这个问题,我也是搞了很久才突然想到,不知道你想到了没有。看看上面我写的第三条,再想想。

好吧,我讲一下吧。

在struts.xml(主配置文件,如果你有分子配置文件的话)中添加以下代码:

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

再启动试试....偷笑了吧....

 

5.如果你spring和struts整合成功(针对修改了struts2配置文件路径的,不修改配置文件路径的轻松解决,这里就不赞扬了),先恭喜了一下。

另外,这个时候,如果你把struts.xml文件中的<constant name="struts.objectFactory" value="spring" />删除了之后,整合还成功吗?讲多无谓,自己试试吧。

应该还是可以的吧,为什么这样呢?按照道理,应该整合失败才对啊,怎么会这样呢?原因很简单,看看struts2-spring-plugin.jar包中的struts-plugin.xml文件就知道了。不管你是修改了配置文件存放路径(收到添加要读取的配置文件),还是默认的存放路径(struts2默认帮你做了),都是需要读取struts-plugin.xml文件的内容,所以,明白了吧。

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值