Уведомьте пользователя о тайм-ауте сессии в Java EE

Мое требование состоит в том, чтобы уведомить пользователя со всплывающим окном, говоря, что сеанс пользователя собирается испытать таймаут в x секунды в случае, если пользователь не выполняет действия по веб-странице.

Дополнение к этому требованию должно постепенно уменьшить значение x секунды динамично во всплывающем окне.

Среда, которую я использую, является Java EE.

8
задан PraveenKumar Lalasangi 27 September 2019 в 12:51
поделиться

2 ответа

Используйте HttpSession#getMaxInactiveInterval() и setTimeout(). В этой конкретной цели Ajax не нужен, если только вы не хотите отложить тайм-аут на каждую клиентскую активность (опрос).

Основной пример:

<script>
    var secondsBeforeExpire = ${pageContext.session.maxInactiveInterval};
    var timeToDecide = 15; // Give client 15 seconds to choose.
    setTimeout(function() {
        alert('Your session is about to timeout in ' + timeToDecide + ' seconds!')
    }, (secondsBeforeExpire - timeToDecide) * 1000);
</script>

Чтобы волшебным образом декрементировать время внутри сообщения, то вместо основного alert() вам понадобится оверлей с div, в котором вы можете контролировать содержимое через дерево HTML DOM и использовать другой setTimeout() на 1 секунду для динамического изменения текста.

Обратите внимание, что этот скрипт должен обслуживаться JspServlet для того, чтобы EL заработал. Таким образом, вы должны поставить скрипт в HTML страницы JSP, или если вы действительно хотите, чтобы все JS в отдельном файле *.js, то вы должны позволить JspServlet обрабатывать любые *.js запросов, а также.

.
11
ответ дан 5 December 2019 в 14:03
поделиться

Я не думаю, что Java/Java EE будет действительно полезна здесь, так как это должно быть обработано на стороне клиента (т.е. с помощью JavaScript). Одним из решений, которое я могу придумать, будет установка своего рода таймера, который будет уведомлять пользователя за несколько минут до таймаута сервера.

Во время прогулки по этому поводу я нашел запись блога Эрика Паскарелло Update User's Session with AJAX (и перезагруженную версию Updating User Session with Ajax - Round 2), которая точно описывает такое решение (и использует XMLHttpRequest для обновления сеанса). Его сценарий управления сеансом Ajax доступен здесь .

.
1
ответ дан 5 December 2019 в 14:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: