У меня есть html-страница поиска, которая работает вместе с классом Java HttpServlet, который обрабатывает некоторые функции и отправляет результаты на страницу jsp.
Чтобы выполнить поиск, мне нужен объект loginresult, который я поместил в сеанс в другой сервлет.
Вот что происходит в сервлете входа в систему:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
// get attributes that were filled in on the login webpage
request.getAttribute("username");
request.getAttribute("password");
String username = request.getParameter("username");
String password = request.getParameter("password");
LoginManager loginManager = new LoginManager(username.trim(), password.trim());
if (loginManager.doLogin() == true) {
javax.servlet.http.HttpSession session = request.getSession();
session.setAttribute("loginResult", loginManager.getLoginResult());
session.setAttribute("binding", loginManager.getBinding());
response.sendRedirect("lookup.html");
Это то, что происходит с сервлетом поиска
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html");
javax.servlet.http.HttpSession session = request.getSession();
LoginResult lr = (LoginResult) session.getAttribute("loginResult");
if(lr == null)
{
throw new Exception("Your session has expired, please log in again");
}
// some look up code
RequestDispatcher dispatcher = request.getRequestDispatcher("result.jsp");
request.setAttribute("result", result);
request.setAttribute("question", question);
request.setAttribute("xml", xml);
dispatcher.forward(request, response);
На моей странице jsp есть кнопка ввода, которая выполняет следующие действия: ONCLICK = "window.location.href = 'lookup.html'" />
Иногда, когда я оставляю свою страницу результатов несфокусированной или минимизирую или что-то еще, или я жду слишком долго и нажимаю кнопку возврата на страницу поиска, появляется, что мой объект loginresult == нуль
Так что, на мой взгляд, это швы, чтобы быть истекшим. Хотя я думал, что сервер Apache Tomcat поддерживает стандартные сеансы в течение 30 минут.
Есть предположения, почему мой атрибут сеанса исчез?