2012-01-03 4 views
3

Следующий тест JUnit работает в моем приложении:не может прочитать файл свойств в JSP

@Test 
public void testMessageResources(){ 
    final InputStream stream = getClass(). 
     getResourceAsStream("/com/service/MessageResources.properties"); 
    Assert.assertNotNull(stream); 
} 

Но в моем JSP, я не могу прочитать файл, используя этот код:

<% 
    final InputStream resourceAsStream = application. 
     getResourceAsStream("/com/service/MessageResources.properties"); 
%> 

resourceAsStream всегда null. Я использую JSP 2.1.


MessageResources.properties файл находится на пути к классам, но не внутри каталога JSP. Это проблема?

ответ

5

JSP использует ServletContext.getResourceAsStream(), что не делает то же самое, что и Class.getResourceAsStream(). Он не ищет ресурсы в пути к классам. Если вы хотите использовать Class.getResourceAsStream(), используйте Class.getResourceAsStream(). Он также будет работать в контексте Java EE. Просто не забудьте использовать класс, загруженный из того же загрузчика классов, что и тот, который вы хотите использовать для загрузки файла свойств.

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

1

getClass(). GetResourceAsStream() ищет файл в пути к классам, а application.getResourceAsStream напрямую ищет ресурс в вашем веб-приложении. Поэтому каталог «com» ​​должен находиться внутри вашего веб-приложения, а не в пути к классам.

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