Struts 2 中属性文件放在哪里?

问题描述 投票:0回答:4

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

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

java properties localization struts2
4个回答
6
投票

通常您应该将属性文件放入

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;
}

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

prop.load(new FileInputStream("/path/to/myproperties.properties"));

如果您正在谈论

struts.properties

该框架使用了许多可以更改以适应的属性 您的需求。要更改任何这些属性,请指定属性 struts.properties 文件中的键和值。属性文件可以是 位于类路径上的任何位置,但通常可以在下面找到 /WEB-INF/课程。

如果您正在寻找消息资源属性,可以在

struts.properties
struts.xml
中进行配置(后者提供)。

<constant name="struts.custom.i18n.resources" value="path/to/resources/MessageResources"/>

该值是文件路径

src/path/to/resources/MessageResources.properties

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


5
投票

属性文件通常会去:

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

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

log4j.properties
作为其默认配置文件。

但是,这有时会导致问题,具体取决于类加载顺序:有时系统可能会拾取“杂散”配置文件。自己配置可能仍然更好;我仍然倾向于类路径,但配置文件也常见于

WEB-INF
。这两种方法都有效,并且两种样式都可以使用 JNDI、初始化参数、环境变量或系统变量(例如,
-D
)进行配置。


4
投票

将 myPropertyFile.properties 文件保留在 src 文件夹中(构建项目后,您将在 WEB-INF/classes 中找到它)并使用以下代码访问它们:

  Properties prop = new Properties();
  ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
  prop.load(classLoader.getResourceAsStream("/myPropertyFile.properties"));

0
投票

理想情况下,您可以将属性文件保存在: /src/com/cft/web/bundle/. 喜欢, /src/com/cft/web/bundle/LabelResources.properties 或者 /src/com/cft/web/bundle/Applicationresources.properties.

事实上,你可以选择自己喜欢的道路。

只需记住在 web.xml/struts-config.xml 中添加正确的完整路径即可

对于 ex=g。

  1. 在 web.xml 中:

            <description>Application Resources</description>
            <env-entry-name>ApplicationResources</env-entry-name>
            <env-entry-value>com.cft.web.bundle.ApplicationResources</env-entry-value>
            <env-entry-type>java.lang.String</env-entry-type>

  2. 在struts-config.xml中

<message-resources parameter="com.cft.web.bundle.LabelResources" key="yourPropertiesFileName"/>

© www.soinside.com 2019 - 2024. All rights reserved.