struts2设置加载非默认路径的struts.xml文件解决方案

方案一:
 
首先我们要明白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

时间: 2024-08-04 10:14:39

struts2设置加载非默认路径的struts.xml文件解决方案的相关文章

Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新

Java日志组件logback使用:加载非类路径下的配置文件并设置定时更新 摘自: https://blog.csdn.net/johnson_moon/article/details/78874499 2017年12月22日 16:20:29 阅读数:868 标签: javalogback日志配置文件logback-xm 更多 个人分类: Java日志 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/johnson_moon/article/d

struts2设置非默认路径的struts.properties以及.properties文件解决方案

一.web应用的classpath简介    classpath路径在每个J2ee项目中都会用到,即WEB-INF下面的classes目录,所有src目录下面的java.xml.properties等文件编译后都会在此,所以在开发时常将相应的xml配置文件放于src或其子目录下. Struts 2框架有两个核心配置文件,其中struts.xml文件主要负责管理应用中的Action映射,以及该Action包含的Result定义等.除此之 外,Struts 2框架还包含 struts.propert

Mysql加载配置默认路径

查看命令 mysqld --verbose --help|grep "Default options" -n1 输出结果 11-12:Default options are read from the following files in the given order:13-/etc/my.cnf /etc/mysql/my.cnf /home/uar/local/mysql/etc/my.cnf ~/.my.cnf

struts2——配置struts.xml文件

在struts2框架中struts.xml是应当放到src的根目录,程序编译后会将struts.xml放到WEB-INF/classes目录下. Struts2在web.xml中的一般配置如下: Xml代码   <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFil

通过eclipse.ini修改Eclipse加载jdk的路径

这里直接把在网上的找到的答案记录下来,原文地址:http://www.oschina.net/question/109676_15561: 如果出现 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误, 原因1:给定目录下jvm.dll不存在. 解决方法:(1)重新安装jre或者jdk并配置好环境变量.(2)copy一个jvm.dll放在该目录下. 原因2:eclipse的版本与jre或者jdk版本不一致 解决方法:要么两

常用宏定义 - 设置加载提示框

1.第三方框架:Toast /** 第三方框架:Toast */ #define kToast(str) CSToastStyle *style = [[CSToastStyle alloc] initWithDefaultStyle]; [kWindow makeToast:str duration:0.6 position:CSToastPositionCenter style:style];kWindow.userInteractionEnabled = NO; dispatch_afte

设置 Jupyter notebook 工作空间 / 默认路径

常用的启动 Jupyter notebook 的两种方式是:命令行窗口启动和开始菜单启动.设置 Jupyter notebook 的默认路径也有两种常用方式: 修改配置文件 设置快捷方式. 1 通过修改 Jupyter notebook 的配置文件修改 Jupyter notebook 的工作空间步骤如下: 1)在命令行窗口运行如下命令 jupyter notebook --generate-config # 生成一个 .py 的文件 2) 按照上面的路径用文本编辑器或 Nopad++ 打开 j

cocos2d-x3.0.1,加载cocostudio ui编辑器导出的json文件出现&quot;Buffer is too small&quot; &amp;&amp; 0解决方案

刚到这个公司,开始进行cocos2d-x的真正项目开发,为了以后能够更好扩展,改动不大,决定使用3.X版本开发,而且使用ui编辑器.在导入的时候,今天遇到一个问题,Buffer is too small,搜了不少,但是都没有解决的方案,最后查到一个错误诱因,是因为ui中使用了label所致,于是我试了试,发现还真是label导致的问题,每次运行异常都发生在CCDevice.cpp的 bool setFont(const char * pFontName = NULL, int nSize = 0

iOS开发——网络Swift篇&amp;NSURLSession加载数据、下载、上传文件

NSURLSession加载数据.下载.上传文件 NSURLSession类支持三种类型的任务:加载数据.下载和上传.下面通过样例分别进行介绍. 1,使用Data Task加载数据 使用全局的sharedSession()和dataTaskWithRequest方法创建. 1 func sessionLoadData(){ 2 //创建NSURL对象 3 let urlString:String="http://hangge.com" 4 var url:NSURL! = NSURL(