powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / HttpSession не передаётся между сервлетами
14 сообщений из 14, страница 1 из 1
HttpSession не передаётся между сервлетами
    #33837796
BigMaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть такая проблемка. Я почитал в форумах и там пишется что сессия должна быть единой для сеанса работы с сервером. Но у меня при успешном логине пользователю назначается идентификатор следующим образом:
HttpSession Session=req.getSession(true);
Session=setAttribute("UserID",Id);

и при пработе с прогой пользователь обращается к различным сервлетам, которые считывают HttSession и выбирают оттуда параметр UserId таким образом:

HttpSession Session=req.getSession(False);
if(Session != null){int id=(Integer)Session.getAttribute("UserId");}
else{Ошибка сессия не передалась}

Я заметил ещё такую весчь, что если один аплет устанавливает атрибут и его же читает при повторном обращении, то всё срабатывает хорошо. А если Один устанавливает сессию, а другой считывает её. ТО происходит ошибка так Session не передаётся и равняется null.

В чём тут дело подскажите. Форма взаимодействия пользователя сделана с использование Фраймов
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33838697
BigMaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь за ошибку.

Вот исправленный вопрос:
Есть такая проблемка. Я почитал в форумах и там пишется что сессия должна быть единой для сеанса работы с сервером. Но у меня при успешном логине пользователю назначается идентификатор следующим образом:
HttpSession Session=req.getSession(true);
Session=setAttribute("UserID",Id);

и при пработе с прогой пользователь обращается к различным сервлетам, которые считывают HttSession и выбирают оттуда параметр UserId таким образом:

HttpSession Session=req.getSession(False);
if(Session != null){int id=(Integer)Session.getAttribute("UserId");}
else{Ошибка сессия не передалась}

Я заметил ещё такую весчь, что если один Сервлет устанавливает атрибут и его же читает при повторном обращении, то всё срабатывает хорошо. А если Один устанавливает сессию, а другой считывает её. ТО происходит ошибка так Session не передаётся и равняется null.

В чём тут дело подскажите. Форма взаимодействия пользователя сделана с использование Фраймов
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33838724
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эти сервлеты, "один" и "другой" - они точно в одном контексте работают?
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33838845
BigMaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pitbull terrierЭти сервлеты, "один" и "другой" - они точно в одном контексте работают?

Они относятся к одному проекту.
И можно пояснить что значит "относятся к одному контексту"? а то я пока новичок.
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33839203
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в одном приложении или нет?
web.xml один на всех?
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33839305
BigMaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Web.xml у всех один
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33839334
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй зафиксировать время обращения - может с фреймами чего-то накручено, и считывание сессии происходит раньше, чем установка
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33839454
BigMaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
время создания Сессии меньше чем время момента считывания. проверил только что.
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33839466
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код обоих сервлетов в студию
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33839476
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<censored>!
кажется, я знаю
если то, что ты написал - копипаст из кода, то:

Session=setAttribute("UserID",Id);

и

Session.getAttribute("UserId");}

"UserID" != "UserId"

почувствуйте разницу (с)
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33839528
BigMaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почти весь код первого сервлета который устанавливает сессию
Модератор: есть кнопка SRC для заключения выделеного текста в тег форматирования кода
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 public   void  service(HttpServletRequest req, HttpServletResponse res)  throws  IOException {
        HttpSession Session = req.getSession(true);
        res.setContentType("text/html");
        String Login=req.getParameter("login");
        String Password=req.getParameter("password");
        RequestDispatcher dis ;
        String UserId=Pack.getRegistartionData(Login,Password);
         if (UserId!= null ){
             if (!UserId.equals("0")) {
                dis = getServletContext().getRequestDispatcher("/View_table");
                Session.setAttribute("UserId",UserId);
                res.sendRedirect("http://"+req.getRemoteHost()+"/docflow_web/main_frame.html");
                }  else  { res.sendRedirect("http://"+req.getRemoteHost()+"/docflow_web/ErrorPassword.html");}
        }
    }
И во втором сервлете Session оказывается равным null

Код второго сервлета который получает сессию:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  public   void  service (HttpServletRequest req, HttpServletResponse res)  throws  IOException {
        res.setCharacterEncoding("cp1251");
        HttpSession Session=req.getSession(false);
        PrintWriter out=res.getWriter();
        res.setContentType("text/html");
        ResultSet set= null ;
         int  id=Integer.parseInt(req.getParameter("id"));
         if (Session!= null ){UserId=(String)Session.getAttribute("UserId");
        id=(Integer)Session.getAttribute("LastDir");
        set=pack.getListDoc(UserId,id);
        out.println(GetHtml(set));
       }
      else  {out.println("Error: Session=null");//res.sendRedirect("http://"+req.getRemoteHost()+"/docflow_web/password.html");
}
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33839555
Фотография Pitbull terrier
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну блин я не знаю :-\
архивируй проект и кидай мне на мыло (в профиле)
будем посмотреть
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33839804
Фотография MalkoLinge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
res.sendRedirect("http://"+req.getRemoteHost()+"/docflow_web/main_frame.html");
Вот в этом месте ты, дружище, свою сессию и грохнул, так как информация о сессии в том числе передается при помощи модификации URL.
Попробуй вот так (или возле того)
Код: plaintext
1.
2.
3.
String url = "http://"+req.getRemoteHost()+"/docflow_web/main_frame.html";
url = response.encodeRedirectURL(url);
res.sendRedirect(url);




WBR,
Malkolinge
...
Рейтинг: 0 / 0
HttpSession не передаётся между сервлетами
    #33840014
BigMaks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MalkoLinge
Код: plaintext
1.
res.sendRedirect("http://"+req.getRemoteHost()+"/docflow_web/main_frame.html");
Вот в этом месте ты, дружище, свою сессию и грохнул, так как информация о сессии в том числе передается при помощи модификации URL.
Попробуй вот так (или возле того)
Код: plaintext
1.
2.
3.
String url = "http://"+req.getRemoteHost()+"/docflow_web/main_frame.html";
url = response.encodeRedirectURL(url);
res.sendRedirect(url);

WBR,
Malkolinge

Спасибо огромное. Всё заработало. ДЕйствительно этой строкой я убивал сессию
res.sendRedirect("http://"+req.getRemoteHost()+"/docflow_web/main_frame.html");
после её модификацмм в следующий вид
res.sendRedirect("main_frame.html"); всё заработало.
Благодарю Pitbull terrier за помошь в решении вопроса.
MalkoLinge привелико благодарен за подсказку.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / HttpSession не передаётся между сервлетами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]