ПРИМЕЧАНИЕ: Как прокомментировал jwenting ниже, это вовсе не на 100% безопасно. Если событие onunload не вызывается событием закрытия вкладки или окна браузера, это может произойти сбой.
У меня была та же проблема, и я решил ее с помощью навязчивого события JavaScript:
window.onunload
Позвольте мне кратко объяснить, скажем, у вас есть функция JavaScript, которая отправляет, используя jQuery, текущий идентификатор сеанса в этот сервлет для его аннулирования, например:
function safeexit(){
$.post("/SessionKillServlet", { SID = <%=session.getId()%> }, function(data){});
}
Чтобы вызвать эту функцию, вам просто нужно связать ее следующим образом:
window.onunload = safeexit; //without the ()
Теперь метод safeexit будет вызываться при закрытии окна TAB или BROWSER WINDOW (или в перенаправлении).