Ваша проблема может быть не так легко решить.У меня была похожая ситуация, поэтому я могу дать вам несколько указаний на расследование:
Причина ваших нулевых данных заключается в том, что когда ваш сеанс (где хранится атрибут) умирает, время ожидания воссоздается, потому чтотот же пользователь выдает новый Login POST, затем ваши пользовательские данные сеанса умирают вместе с ним, если вы не сохраните их, на которые ссылаются как session_id, в постоянном хранилище, таком как Cookie в браузере пользователя или в базе данных для каждого пользователя: но это может быть довольно сложнымреализовать.
В качестве краткого описания:
Ознакомьтесь с документацией по этому методу в HttpServlet: getThreadLocalRequest (). getSession (false);
, а также это может решитьваша проблема:
request.getSession (). setMaxInactiveInterval (3600);// Максимальное количество интервалов в секундах между вызовами до отмены сеанса.Это означает, что через час вам нужно будет автоматически выйти из системы вашего пользователя (или заставить его повторно войти в систему), чтобы предотвратить возникновение нулевого значения.
Выход из системы вызовет:
сеанс.removeAttribute ( "атрибут");session.invalidate ();
Также обратите внимание, что вы упомянули наличие двух разных сервлетов (определенных в Tomcat web.xml ??).Один - Логин, другой - Выход, они оба отвечают на POST / GET.Я предполагаю, что у них есть две разные реализации, и я думаю, что они не используют один и тот же объект сеанса.Поэтому в этом случае вам, возможно, придется реализовать действия Login + Quit в том же сервлете с правильным интервалом времени аннулирования сеанса.