Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: передача атрибутов от сервлета фильтру.  (Прочитано 7114 раз)
0 Пользователей и 1 Гость смотрят эту тему.
paster
Гость
« : 06-12-2004 22:31 » 

Люди! Помогите! Вторую неделю копаюсь.
нужно передать атрибут от сервлета к фильтру.
   
                   при успешном вводе пароля в сервлете checkuser задаю переменную
                      public void service(HttpServletRequest requst,HttpServletResponse response) throws ServletException,IOException
                      {
                         System.err.println("in check...");
                   request.getSession().setAttribute("logged", "true");
                   this.getServletContext().getRequestDispatcher("/1.html").forward(request, response);
             }

                 а фильтр её не видит.
                 String sss="";
                 if ((HttpServletRequest)request.getSession().getAttribute("logged") != null) {
                  sss =((String)(HttpServletRequest)request.getSession().getAttribute("logged")).toString();
              } else {sss="null!"; }
                 
видит только если делать через getServletContext
но тогда и другим пользователям она будет true
 
даже не знаю как ещё можно узнать - в БД таблицу писать?
Записан
drZoidberg
Гость
« Ответ #1 : 15-12-2004 04:21 » 

Привет. У тебя тут все равно ответов нет, так что предложу свою версию:
>>request.getSession().setAttribute("logged", "true"); - сомневаюсь по-поводу true в кавычках. Я делаю так:
java.sql.Connection con;
....
request.getSession().setAttribute("connection",con);
...
т.е. "засавываю" сам объект. Соответсвенно извдекаю:
con=(java.sql.Connection)request.getSession().getAttribute("connection");
Если я правильно понял твою проблему, то ты "засунул" объект String("true"), а проверяешь на предмет чего то другого:
if ((HttpServletRequest)request.getSession().getAttribute("logged") != null).
Если я прав, то у тебя два выхода:
1) Затолкать boolean и его же проверить. request.getSession().setAttribute("logged", true);
2) Проверяей как if((String(request.getSession().getAttribute("logged"))).compareTo("true")==0).
Хотя могу и ошибаться....
в общем, что знал, то сказал. Отлично
Записан
paster
Гость
« Ответ #2 : 15-12-2004 12:21 » 

не, ты не прав - с объектом тоже не будет работать  - и почему-то ID сессии всё время меняется
Записан
drZoidberg
Гость
« Ответ #3 : 16-12-2004 03:50 » 

Интересно. Я тебе привел реальный рабочий код. Использую OIAS10g или OC4J в качестве сервера приложений. Насчет смены ID сессии слышу впервые. Вытаскиваю из запроса все что туда положу и в JSP и в сервлетах (хотя особой разницы нет). Давай тогда по-подробнее про фильтр свой расскажи:
1) От кого ты его наследуешь?
2) А ты уверен, что он у тебя срабатывает вообще?
Ну а согласно твоему ответу, если у тебя новая сессия - то в ней и нет никаких твоих переменных, так как их туда никто не ложил. Что у тебя за сервер приложений/web-сервер? Кто отвечает за выполение твоих сервлетов?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines