#java #jsp #session #hashtable
#java #jsp #сессия #хеш — таблица
Вопрос:
Я устанавливаю значение хэш-таблицы в сеансе
session.setAttribute("hash",chk);
Hashtable<Integer,String> navchk = (Hashtable)session.getAttribute("hash");
Enumeration items = navchk.keys();
while(items.hasMoreElements())
{
out.println(items.nextElement());
}
chk.clear();
на конкретной странице он печатает значения. здесь chk — это хэш-таблица.
на другой странице, когда я получаю и печатаю значения, это не работает. Вот код второй страницы….
Hashtable<Integer,String> chk1 = (Hashtable<Integer,String>)session.getAttribute("hash");
Enumeration items = chk1.keys();
while(items.hasMoreElements())
{
out.println(items.nextElement());
}
chk1.clear();
Комментарии:
1. Не могли бы вы добавить заголовки запроса, полученного этими двумя страницами. Я хотел бы посмотреть, получают ли эти две страницы один и тот же файл cookie JSESSIONID.
2. Почему эта разница в приведении:
Hashtable<Integer,String> navchk = (Hashtable)session.getAttribute("hash");
иHashtable<Integer,String> chk1 = **(Hashtable<Integer,String>) **session.getAttribute("hash");
3. Получаете ли вы какое-либо исключение? Пожалуйста, предоставьте дополнительную информацию.
Ответ №1:
Ну, во-первых, вы делаете,
chk.clear();
на вашей первой странице. Это очистит все ваши ключи от этого HashTable
. Имейте в виду, что вы получаете от сеанса, это ссылка на объект chk
, ограниченный ключом ‘hash’. Если вы очистите ключи от этого объекта, вы не получите никаких ключей на второй странице.
Имеет ли это смысл? 🙂
Комментарии:
1. если я не очищу chk, то он добавит больше элементов в каждом цикле. я хочу скопировать chk в сеанс, а затем отправить. Есть ли у них какой-либо способ сделать это?
2. @aarav Что вы имеете в виду, говоря, что это добавляет больше элементов? Если вы хотите скопировать в сеансе его значения, вы должны не очищать его. Или вы можете клонировать объект перед вызовом clear, а затем установить клонированный объект в сеансе.
3. Привет 🙂 .. я делаю небольшой проект по «онлайн-тестированию». существует «chk» (хеш-таблица), в которую я копирую номер вопроса. теперь я пытаюсь передать этот chk другому jsp, используя объект сеанса «hash». я выбираю вопросы по категориям. как только я запускаю project..no проблема вообще. но когда я возвращаюсь и выбираю другую категорию, в chk добавляются новые значения, а также старые. но если я очищу chk в конце, тогда он будет работать правильно, но проблема с сеансом. Надеюсь, вы понимаете, что я пытаюсь сказать или спросить.