Ниже код Я пишу в 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.
Пожалуйста, помогите мне, чтобы проверить, где я делаю ошибку, которую
Благодарности
Как вы думаете, что HTTP-запросы связаны с сеансом? HTTP - это протокол без учета состояния, поэтому, если вы хотите сохранить состояние, клиент должен отправить что-то обратно - либо файл cookie, либо что-то еще, например параметр запроса. –
Я использую метод encodeRedirectURL() для добавления идентификатора сеанса, если файлы cookie отключены. – sjain
Правильно, но тогда как идентификатор сеанса передается обратно при последующем запросе? Возможно, вам нужно предоставить дополнительную информацию обо всем потоке. –