2016-08-27 2 views
0

Ниже код Я пишу в Servlet и запрашиваю этот сервлет из index.html. Form index.html Я передаю ключ и значение для добавления сессии в него.Servlet: новая сессия создана для каждого запроса, когда cookie отключен.

HttpSession session = request.getSession(false); 
if(session == null){ 
    session = request.getSession(); 
} 

session.setAttribute(request.getParameter("key"), request.getParameter("val")); 

Enumeration list = session.getAttributeNames(); 
while(list.hasMoreElements()){ 
    String k = (String)list.nextElement(); 
    String v = (String)session.getAttribute(k); 
    System.out.println(k +"\t\t"+v); 
} 
response.sendRedirect(response.encodeRedirectURL("index.html"));

Выше код работает нормально, когда cookie включен.

Не зря я отключил Cookie и запустил этот код. Я ожидал, что все атрибуты и их значения будут добавлены. Но я получаю только последний. То, что я наблюдал, каждый раз, когда создается новый сеанс, и URL-адрес с JESSIONID также изменяется каждый раз.

Я тестировал это в Chrome и firefox.

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

Благодарности

+0

Как вы думаете, что HTTP-запросы связаны с сеансом? HTTP - это протокол без учета состояния, поэтому, если вы хотите сохранить состояние, клиент должен отправить что-то обратно - либо файл cookie, либо что-то еще, например параметр запроса. –

+0

Я использую метод encodeRedirectURL() для добавления идентификатора сеанса, если файлы cookie отключены. – sjain

+0

Правильно, но тогда как идентификатор сеанса передается обратно при последующем запросе? Возможно, вам нужно предоставить дополнительную информацию обо всем потоке. –

ответ

0

Чтобы решить эту проблему с помощью прим @Andreas я следующего изменения

  1. Я изменил index.html в index.jsp
  2. вместо того, чтобы писать Servlet.do в действии формы Я меняю его на response.encodeURL ("Servlet.do").

Теперь во втором и так далее запросы отправляются с предыдущим JESSIONID на сервер.

Спасибо, Андреас за вашу помощь.

 Смежные вопросы

  • Нет связанных вопросов^_^