Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Servlet listener, При запросе проверять session 
V
    Опции темы
kirillmana
Дата 6.10.2009, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



После аутентификации пользователь должен выбрать параметр, который кладется в session.
Необходимо проверять во время загрузки jsp, если нет в session определенного атрибута, тогда редирект на страницу index.jsp (на ней происходит выбор параметра, а затем он кладется в сессию).
Подскажи, как правильно написать listener.
PM MAIL   Вверх
ivanovpv
Дата 6.10.2009, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 2
Всего: 28



А причем здесь Listener? При входе в JSP приписать кодик проверки значения сессионного атрибута - ну и дальше организовать ветвление на редирект или провалиться дальше в основное тело JSP.


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
kirillmana
Дата 6.10.2009, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Листенер тут при том, что не хотелось бы в каждой jsp проверять одно и тоже, если можно это сделать в листенере один раз

Это сообщение отредактировал(а) kirillmana - 6.10.2009, 10:31
PM MAIL   Вверх
dementiev
Дата 6.10.2009, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 8.2.2008
Где: Минск

Репутация: 1
Всего: 1



kirillmana, скорее всего не листенер, а фильтр. Это стандартная проверка на залогиненеость) пользователя. До того, как данные попадут в сервлет, они проходят через фильтр, который берёт в сессии нужный атрибут и проверяет, залогин ли юзер. Вот те маленький пример.
Код


    <filter>
        <filter-name>CheckFilter</filter-name>
        <filter-class>CheckLoginFilter</filter-class>
        <init-param>
            <param-name>errorPage</param-name>
            <param-value>error.jsp</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>CheckFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


Код

public class CheckLoginFilter implements javax.servlet.Filter {
    private String errorLink;
    private static final Logger logger = Logger.getLogger(CheckLoginFilter.class);

    public void init(FilterConfig filterConfig) throws ServletException {
        errorLink = filterConfig.getInitParameter("errorPage");
    }

    public void doFilter(ServletRequest request, ServletResponse response,
                         FilterChain filterChain) throws IOException, ServletException {

        request.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");

        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpSession session = httpRequest.getSession();
        //String uri = httpRequest.getRequestURI();
        logger.info("type =" + session.getAttribute("type"));


        String action = httpRequest.getParameter("action");
        logger.info("action =" + action);

        if (action == null) {
            action = "next";
        }

        if ("Заказать".equals(action) || "Подать заявку".equals(action) || "Мои заявки".equals(action)) {
            if (session.getAttribute("type") == null || session.getAttribute("type").equals("admin")) {
                httpRequest.getRequestDispatcher(errorLink).forward(request, response);
                return;
            } else if (session.getAttribute("type").equals("client")) { //пользователь имеет право на просмотр страницы
                filterChain.doFilter(request, response);
                return;
            }
        }

        if ("Горячие заявки".equals(action) || "Принять".equals(action) || "Подтвердить редактирование".equals(action)) {
            if (session.getAttribute("type") == null || session.getAttribute("type").equals("client")) {
                httpRequest.getRequestDispatcher(errorLink).forward(request, response);
                return;
            } else if (session.getAttribute("type").equals("admin")) { //пользователь имеет право на просмотр страницы
                filterChain.doFilter(request, response);
                return;
            }
        }

        if ("next".equals(action)) {
            filterChain.doFilter(request, response);
        } else {
            filterChain.doFilter(request, response);
        }
    }

    public void destroy() {
    }

PM MAIL   Вверх
kirillmana
Дата 6.10.2009, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



То что надо, спасибо
PM MAIL   Вверх
kirillmana
Дата 9.3.2010, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Подскажите, а можно вытащить в фильтре, с какой страницы пришел запрос?
PM MAIL   Вверх
MaxPayneC
Дата 9.3.2010, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 3
Всего: 9



Да, можно. 

Код

request.getHeader("referer");

PM   Вверх
koroplysov
Дата 23.5.2011, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 120
Регистрация: 29.8.2009

Репутация: нет
Всего: нет



И я подсмотрел. Полезное.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.