Mam następujący kod jsp (z javascript). Po zalogowaniu się użytkownik może wyświetlić tę stronę. Kiedy okno się zaciera lub mysz jest nieaktywna przez kilka minut, chcę przekierować stronę do Google, a także pozwolić serwletowi logowania również unieważnić bieżącą sesję. Aktualny kod przekieruje tylko do Goole, ale sesja nie została unieważniona, prawda?
Jak mogę to zrobić?
<!DOCTYPE html>
<html>
<head>
<title></title>
Test
<script type="text/javascript">
var lastX, lastY = 0;
var act_timeout = null;
function doAction() {
window.location.assign("http://www.google.com")
<% SOME CODE TO LET SERVLET INVALIDATE CURRENT SESSION ????%>
return false;
}
function move( e ) {
if( e.clientY == lastY && e.clientX == lastX ) {
act_timeout = setTimeout( doAction, 5000 );
return;
}
lastX = e.clientX;
lastY = e.clientY;
act_timeout = clearTimeout( act_timeout );
}
window.onmousemove = move;
window.onblur = doAction;
</script>
</head>
<body>
Odpowiedzi:
0 dla odpowiedzi № 1Najpierw musisz wykonać połączenie po stronie serwera, aby unieważnić sesję, a następnie przekierować do Google. Część po stronie serwera można zaimplementować za pomocą serwletu wylogowania:
@WebServlet("/logout")
public class LogoutServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getSession().invalidate();
response.sendRedirect("http://www.google.com");
}
}
W kodzie javascript wystarczy zastąpić ten wiersz:
window.location.assign("http://www.google.com")
z tym, aby wywołać serwlet:
window.location.assign("/logout")
Serwlet zajmie się przekierowaniem do Google.