Как загрузить .properties файл в jsp

Тег noscript работает хорошо, но потребует, чтобы каждый дополнительный запрос страницы продолжил служить бесполезным файлам JS, так как по существу noscript является клиентской проверкой.

Вы могли установить cookie с JS, но поскольку кто-то еще указал, это могло перестать работать. Идеально, требуется быть в состоянии обнаружить сторону клиента JS, и не используя cookie, установить сторону сервера сессии для того пользователя, который указывает, JS, включен.

возможность А состоит в том, чтобы динамично добавить 1x1 изображение с помощью JavaScript, где атрибут src является на самом деле серверным сценарием. Весь этот сценарий делает, сохраняет к текущему сеансу пользователя, который JS включен ($ _SESSION ['js_enabled']). Можно тогда произвести 1x1 пустое изображение назад к браузеру. Сценарий не будет работать за пользователями, у которых есть JS, отключенный, и следовательно $ _SESSION ['js_enabled'] не будет установлен. Тогда для дальнейших страниц, подаваемых этому пользователю, можно решить, включать ли все внешние файлы JS, но Вы будете всегда хотеть включать проверку, так как некоторые Ваши пользователи могли бы использовать дополнение NoScript Firefox или иметь JS, отключенный временно по некоторой другой причине.

Вы, вероятно, захотите включать эту проверку где-нибудь близко к концу Вашей страницы так, чтобы дополнительный Запрос HTTP не замедлял рендеринг Вашей страницы.

7
задан Robert Munteanu 17 July 2009 в 15:00
поделиться

4 ответа

Это выполнит свою работу:

<%@page import="java.io.InputStream" %>
<%@page import="java.util.Properties" %>

<%
    InputStream stream = application.getResourceAsStream("/some.properties");
    Properties props = new Properties();
    props.load(stream);
%>

В любом случае, я действительно думаю, что вы должны иметь файл свойств в пути к классам и использовать сервлет

10
ответ дан 6 December 2019 в 07:52
поделиться

Я хотел бы настоятельно рекомендовать прочитать о сервлетах модели 2 . Я рекомендую его всем, кто все еще занимается сервлетами Model 1, то есть выполняет «настоящую работу» в JSP.

Что касается вашего вопроса: сначала добавьте файл свойств в путь к классам, затем прочтите файл с помощью getResourceAsSttream:

Thread.currentThread().getContextClassLoader().getResourceAsStream("channelLogos.properties");

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

6
ответ дан 6 December 2019 в 07:52
поделиться

Когда вы говорите «тот же каталог, что и JSP», что именно вы имеете в виду? Ваш JSP находится где-то, скажем, в /mywebapp/somefolder/my.jsp , где mywebapp является корнем вашего приложения, а ваш файл свойств - / mywebapp / somefolder / channelLogos. свойства ?

Если это так, то, скорее всего, они НЕ находятся в одном каталоге. JSP был скомпилирован, и его фактическое расположение может зависеть от контейнера сервлета. Лучше всего использовать ServletContext.getRealPath () , как предлагает pkaeding , с путем к файлу свойств относительно контекста webapp в качестве аргумента. Используя приведенный выше пример:

private Properties logoUrls = new Properties();
logoUrls.load(new FileInputStream(servletContext.getRealPath("/somefolder/channelLogos.properties")));

Тем не менее,

4
ответ дан 6 December 2019 в 07:52
поделиться

Взгляните на ServletContext.getRealPath () . Это должно дать вам полный путь к файлу свойств.

3
ответ дан 6 December 2019 в 07:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: