Skorzystaj z HttpSession#getMaxInactiveInterval()
i setTimeout()
. Ajax nie jest potrzebny w tym konkretnym celu, chyba że chcesz odłożyć limit czasu na każdą aktywność klienta (odpytywanie).
Podstawowe przykład:
<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>
Aby zmniejszyć czas wewnątrz wiadomości magicznie, a następnie zamiast podstawowego alert()
musisz nakładkę z div w którym masz kontrolę nad zawartością poprzez HTML DOM drzewa i użyj innej setTimeout()
na 1 sekundę, aby zmienić tekst dynamicznie.
Należy zauważyć, że skrypt ten musi być obsługiwany przez JspServlet
, aby moduł EL działał. Dlatego musisz umieścić skrypt w kodzie HTML <head>
strony JSP, lub jeśli naprawdę chcesz mieć wszystkie JS w oddzielnym pliku *.js
, musisz także pozwolić, aby JspServlet
obsługiwał również dowolne żądania.
Naprawdę pomocna sugestia i do rzeczy. Dzięki. –
Masz rację, nie ma ścisłej potrzeby AJAX, ale miłą rzeczą w używaniu 'XMLHttpRequest' do aktualizacji sesji jest to, że użytkownik nie będzie musiał odejść, aby uniknąć przekroczenia limitu czasu. Może to być przydatne przy wypełnianiu formularza na przykład. –
"jeśli naprawdę chcesz mieć wszystkie JS w oddzielnym pliku * .js, musisz pozwolić JspServletowi obsługiwać także dowolne żądania * .js" - czy możesz to wyjaśnić, nie znam JS, i muszę umieścić tę funkcję w oddzielnym pliku * .js, ponieważ mam dużo stron jsp? Co powinienem zrobić, żeby to działało w ten sposób? @BalusC –