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

时间:2013-01-29 10:05:12

标签: properties struts2 localization

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

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

4 个答案:

答案 0 :(得分:5)

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

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

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

  

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

如果您正在寻找消息资源属性,可以在prop.load(new FileInputStream("/path/to/myproperties.properties")); struts.properties中配置,后者提供。

struts.properties

值为文件路径struts.xml

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

答案 1 :(得分:5)

属性文件通常会:

  1. 在类路径上,例如,作为资源打开,或
  2. 在客户无法访问的位置,例如/WEB-INF
  3. 哪种更合适取决于您的需求。基于类路径的文件允许捆绑的默认属性文件,无需配置。例如,Log4J将在类路径的根目录中查找log4j.properties作为其默认配置文件。

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

答案 2 :(得分:4)

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

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

答案 3 :(得分:-1)

理想情况下,您可以将属性文件保存在: / src目录/ COM / CFT /网络/包/。 喜欢, /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>

  1. 在Struts-config.xml
  2. <message-resources parameter="com.cft.web.bundle.LabelResources" key="yourPropertiesFileName"/>