Страницы Xhtml и тест HttpSession, не JSTL? - PullRequest
1 голос
/ 30 июня 2010

У меня есть динамическое веб-приложение в Java EE с JSF, Facelets, Richfaces. Все мои страницы - это HTML-страницы. Так что JSTL не работает в этом. Для того чтобы страницы моей учетной записи и все другие личные страницы были доступны, я хочу проверить, подключился ли пользователь, поэтому если атрибут атрибута session HttpSession не равен NULL. Если значение равно null, пользователь перенаправляется на страницу приветствия.

Я пытался на своей странице xhtml:

<jstl:if test="${sessionScope['session']==null}">
 <jstl redirect...>
</jstl:if>-->

но поскольку это не страница JSP, она не будет работать. Итак, где я должен проверить, не является ли сеанс пустым, чтобы пользователь мог видеть свои личные страницы? в центральном управляемом бобе?

1 Ответ

3 голосов
/ 30 июня 2010

Обычное место для этого - Filter.

Создайте класс, который implementsjavax.servlet.Filter и запишите следующую логику в методе doFilter():

if (((HttpServletRequest) request).getSession().getAttribute("user") == null) {
    // Not logged in, so redirect request to login page.
    ((HttpServletResponse) response).sendRedirect("/login.jsf");
} else {
    // Logged in, so just continue request.
    chain.doFilter(request, response);
}

Сопоставьте этот фильтр в web.xml с url-pattern, например, /private/*, /secured/*, /restricted/* и т. Д.

<filter>
    <filter-name>loginFilter</filter-name>
    <filter-class>com.example.LoginFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>loginFilter</filter-name>
    <url-pattern>/private/*</url-pattern>
</filter-mapping>

Если у вас есть личныйстраниц в папке /private, тогда этот фильтр будет вызван и соответственно обработать присутствие вошедшего в систему пользователя в сеансе.

Обратите внимание, что я переименовал имя атрибута session в user, так как это делаетгораздо больше смысла.Сам по себе HttpSession - это уже сеанс.В противном случае это было бы слишком двусмысленным и запутанным для других разработчиков, проверяющих / поддерживающих ваш код.

...