Где поместить файл свойств в Struts 2?

У меня есть файл свойств, помещенный в корень веб-проекта на Java. Я использую Struts 2. Мой код не может прочитать файл свойств. Где я должен хранить файл свойств?

Я проверил путь по умолчанию, это где мой Eclipse установлен. Но я хочу, чтобы эта система должна читать файл из самой папки проекта.

7
nl ja de

4 ответы

Обычно вы должны поместить файл свойств в папку 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"));

If you are talking about struts.properties

В структуре используется ряд свойств, которые можно изменить для соответствия   твои нужды. Чтобы изменить любое из этих свойств, укажите свойство   ключ и значение в файле struts.properties. Файл свойств может быть   найти в любом месте пути класса, но он обычно находится в   / WEB-INF/классы.

Если вы ищете свойства ресурса сообщения, его можно настроить в struts.properties или struts.xml , который предлагается позже.


the value is a filepath src/path/to/resources/MessageResources.properties

Если вы ищете подходящий способ настройки приложения, рассмотрите возможность использования EasyConf .

5
добавлено
Спасибо, теперь мне не нужно записывать абсолютный путь файла свойств каждый раз. :)
добавлено автор silver, источник

Файлы свойств обычно будут либо идти:

  1. on the the classpath, e.g., for opening as a resource, or
  2. at a location inaccessible to clients, e.g., under /WEB-INF

Что более важно, зависит от ваших потребностей. Файлы на основе Classpath позволяют добавлять файлы свойств по умолчанию без конфигурации. Например, Log4J будет искать log4j.properties в корневой части пути к классам в качестве файла конфигурации по умолчанию.

Это может иногда приводить к проблемам, однако, в зависимости от порядка загрузки классов: иногда система может забирать «бродячий» файл конфигурации. Конфигурация его сама по себе может быть предпочтительной; Я по-прежнему склонен к пути к классам, но файлы конфигурации также обычно встречаются в WEB-INF . Любой из этих методов работает, и оба стиля могут быть настроены с использованием JNDI, параметров инициализации, переменных среды или системных переменных (например, -D ).

5
добавлено
+1 для описания
добавлено автор Jaiwo99, источник

Сохраните файл myPropertyFile.properties в папке src (после проекта сборки вы найдете его в WEB-INF/classes) и получите доступ к ним с помощью этого кода:

  Properties prop = new Properties();
  ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
  prop.load(classLoader.getResourceAsStream("/myPropertyFile.properties"));
4
добавлено

В идеале вы можете сохранять файлы свойств в: / SRC/COM/ПФТ/веб/комплект /. как, /src/com/cft/web/bundle/LabelResources.properties ИЛИ /src/com/cft/web/bundle/Applicationresources.properties.

на самом деле это зависит от вас, чтобы дать все, что вам нравится.

Не забудьте добавить правильный полный путь в web.xml/struts-config.xml

для ex = g. 1. в web.xml:<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

		Application Resources
		ApplicationResources
		com.cft.web.bundle.ApplicationResources
		java.lang.String
</div> </div>

  1. В Struts-config.xml

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

</div> </div>

1
добавлено
Прочтите внимательно вопрос, OP использует Struts2
добавлено автор Roman C, источник
да, римский C, мой плохой .. Это для STRUTS 1.x
добавлено автор Vishnu Dahatonde, источник