在Struts 2中放置属性文件的位置?

use*_*114 7 localization struts2 properties

我有一个属性文件放在Java的Web项目的根目录中.我正在使用Struts 2.我的代码无法读取属性文件.我应该在哪里保存我的属性文件?

我已经检查了默认路径,它是我安装Eclipse的地方.但我希望该系统应该从项目文件夹本身读取文件.

Rom*_*n C 5

通常,您应该将属性文件放到该文件src夹中,以便应用程序能够在运行应用程序时读取属性文件,将属性文件从src文件夹复制到该classes文件夹.据您所知,该classes文件夹应该是项目输出文件夹,因此它将用作classpath文件夹,并且应用程序能够加载属性文件(如果它在上面)classpath.

从类路径获取属性的示例:

Properties prop = new Properties();

try {
  //load properties from the class path
  prop.load(this.getClass().getClassLoader().getResourceAsStream("myproperties.properties"));

  //get the property 
  System.out.println(prop.getProperty("mykey"));

} catch (IOException ex) {
  ex.printStackTrace();
  throw ex;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您知道文件系统上文件的路径,则可以加载属性,在本例中为use

prop.load(new FileInputStream("/path/to/myproperties.properties"));
Run Code Online (Sandbox Code Playgroud)

如果你在谈论 struts.properties

该框架使用了许多可以根据您的需求进行更改的属性.要更改任何这些属性,请在struts.properties文件中指定属性键和值.属性文件可以位于类路径的任何位置,但通常位于/ WEB-INF/classes下.

如果您正在寻找消息资源属性,可以在提供的struts.propertiesstruts.xml后期配置它.

<constant name="struts.custom.i18n.resources" value="path/to/resources/MessageResources"/>
Run Code Online (Sandbox Code Playgroud)

值是文件路径 src/path/to/resources/MessageResources.properties

如果您正在寻找配置应用程序的正确方法,请考虑使用EasyConf的选择.


Dav*_*ton 5

属性文件通常会:

  1. 在类路径上,例如,作为资源打开,或
  2. 在客户无法访问的位置,例如,在 /WEB-INF

哪种更合适取决于您的需求.基于类路径的文件允许捆绑的默认属性文件,无需配置.例如,Log4J将log4j.properties在类路径的根目录中查找其默认配置文件.

然而,这有时会导致问题,这取决于类加载顺序:有时系统可以选择"迷路"配置文件.自己配置可能仍然是可取的; 我仍然倾向于类路径,但配置文件也常见于WEB-INF.这两种方法都可以工作,并且可以使用JNDI,init参数,环境变量或系统变量(例如-D)配置两种样式.