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

Properties Struts 2中的属性文件放在哪里?,properties,struts2,localization,Properties,Struts2,Localization,我在Java中的web项目根目录中放置了一个属性文件。我正在使用Struts2。 我的代码无法读取属性文件。我应该在哪里保存我的属性文件 我已经检查了默认路径,它是安装Eclipse的地方。但是我希望系统应该从项目文件夹本身读取文件。通常您应该将属性文件放到src文件夹中,这样当您运行应用程序时,您的应用程序能够读取属性文件。属性文件从src文件夹复制到classes文件夹中。据您所知,classes文件夹应该是项目输出文件夹,因此它将用作classpath文件夹,如果它位于classpath上

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


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

通常您应该将属性文件放到
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"/>

该值是一个filepath
src/path/to/resources/MessageResources.properties


如果您正在寻找配置应用程序的适当方法,请考虑使用选择。 属性文件通常会转到:

  • 在类路径上,例如,作为资源打开,或
  • 位于客户端无法访问的位置,例如在
    /WEB-INF
  • 哪个更合适取决于你的需要。基于类路径的文件允许绑定默认属性文件而无需配置。例如,Log4J将在类路径的根目录中查找
    Log4J.properties
    ,作为其默认配置文件


    然而,这有时会导致问题,具体取决于类的加载顺序:有时系统会拾取一个“散乱”的配置文件。自己配置它可能仍然更可取;我仍然倾向于使用类路径,但是配置文件通常也可以在
    WEB-INF
    中找到。这两种方法都可以工作,并且两种样式都可以使用JNDI、init参数、环境变量或系统变量(例如,
    -D
    )进行配置。

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

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

    理想情况下,您可以将属性文件保存在: /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中:
    应用程序资源
    应用程序资源
    com.cft.web.bundle.ApplicationResources
    
    java.lang.String
    谢谢,现在我不必每次都硬编码属性文件的绝对路径。:)仔细阅读问题,OP正在使用Struts2