2010-12-13 2 views
0

У меня возникли проблемы с загрузкой файла (.properties) из папки webcontent в моем сервлете. Решения, которые я нашел, похоже, не работают. Я получаю исключение при попытке прочитать файл. Ниже моей папки и структуры пакета и частей кода.Доступ к файлу .properties в файле webcontent формы сервлета проекта

Что я делаю неправильно?

структура папок WebContent

WebContent 
- WEB-INF 
- languages 
    -- language.properties 
- .... 

структура пакета

package x.y.z.aa 
- Servlet.java 
package x.y.z.ab 
- PropertyLoader.java 

Servlet.java код

public void init(ServletConfig config) throws ServletException {  
    super.init(config); 
    servletContext = this.getServletContext(); 
    PropertyLoader = new PropertyLoader(servletContext); 
} 

PropertyLoader.java

public PropertyLoader(ServletContext context) { 
    super(); 
    try{ 
     properties.load(context.getResourceAsStream("/languages/language.properties")); 
     System.out.println(languages.get("test")); 
    } catch (Exception e){ 
     System.out.println("Error reading properties file"); 
     System.out.println(e.getMessage()); 
    } 
} 

К сожалению. Я забыл создать экземпляр экземпляра Properties. Спасибо за отзыв о доступе к HTTP, когда он находится в его текущем местоположении. Это должно быть разрешено, когда я помещаю его под папку WEB-INF?

+2

В чем исключение? – JOTN

+0

Это было бы тривиальное 'NullPointerException'. – BalusC

+0

проверить, является ли 'servletContext' не нулевым. – Bozho

ответ

0

Вы должны подумать об изменении местоположения файла свойств. В текущем местоположении его содержимое можно получить через простой запрос HTTP GET (как в http://host:8080/AppContext/languages/language.properties), который можно рассматривать как проблему безопасности.

Кроме того, если вы могли бы опубликовать исключение, которое вы получаете, можно было бы получить дополнительную помощь, чтобы найти, что происходит с вашим кодом.

+0

Хотя это правда, это не отвечает на вопрос. Это должно быть опубликовано как комментарий. – BalusC

2

Желательно разместить такие файлы в WEB-INF. Затем должно работать следующее: если файл есть (на самом деле он должен работать и в вашей текущей настройке). Просто убедитесь, что файл хорошо сформирован, т. Е. Что это файл реальных свойств.

properties.load(context 
    .getResourceAsStream("/WEB-INF/languages/language.properties")); 
0

Да, обычно вы помещаете такие вещи в папку WEB-INF. Если вы действительно не хотите, чтобы он был доступен по HTTP по какой-либо причине.

Смежные вопросы