Vor kurzem habe ich ein Projekt durchgeführt, das Anforderungen hat. Ich möchte die automatische Anmeldefunktion implementieren. Durch die Überprüfung relevanter Informationen plane ich, die Sitzungsüberwachung zu verwenden. Das Folgende ist eine Liste der Methoden zum Konfigurieren des Monitors:
1. Fügen Sie den folgenden Code zur Web.xml -Datei des Projekts hinzu:
<!-Session Listener hinzufügen-> <Hörer> <Hörer-Klasse> Listener-Pfad </Listener-Klasse> </Listener>
2. Schreiben Sie Java -Klassen.
öffentliche Klasse SessionListener implementiert httpSessionListener {public void sessioncreated (httpSessionEvent arg0) {// SimpleDateFormat wird ausgeführt, wenn die Sitzung SimpleFormat SimpleFormat = new SimpleDateFormat ("mm-ss-ms") erstellt wurde nowtimes = SimpleFormat.format (new Dateweit (). "+nowtimes+" _ "+u); String nowtimes = SimpleFormat.format (neues Datum ()); //System.out.println("Session ist abgelaufen. Endzeit: "+nowtimes);}}Nach Abschluss der Konfiguration habe ich nach Ablauf der Sitzung erfolgreich die SessionDestroyed -Methode eingegeben. Ich war bereit, den Seitensprungvorgang auszuführen. Ich fand plötzlich heraus, wie man einen Sprung schreibt. Ich war fassungslos und surfte weiter im Internet, um den Meister zu fragen. Ich stellte fest, dass dieser Monitor mit einer gewissen Hintergrundstatistikverarbeitung durchgeführt wurde und die Funktion des Seitensprungs nicht erkennen konnte.
Ich kann diese Methode nur aufgeben und Filter verwenden, um sie zu implementieren
1. Fügen Sie die Filterkonfiguration in web.xml hinzu
<Filter> <Filter-Name> SessionFilter </filter-name> <filterklasse> com.orchestall.web.helper.Session
2. Erstellen Sie eine neue SessionFilter -Klasse, um die Filterschnittstelle zu implementieren.
public class SessionFilter implements Filter {public void destroy() {// TODO Auto-generated method stub}public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {HttpServletRequest httpRequest = (HttpServletRequest) request;HttpServletResponse httpresponse = (httpServletResponse) Antwort; url.substring (url.lastindexof ("/")); // Zeitleitungsverarbeitung, AJAX -Anforderung Timeout legt den Timeout -Status fest, und die Seitungsanforderung Timeout gibt eine Eingabeaufforderung zurück und leitet es weiter, wenn (path.indexof (". Aktion")! (httprequest.getheader ("x-requested-with")! "Timeout"); "'; {chain.dofilter (request, Antwort);}}@overridePublic void init (filterconfig arg0) löscht ServletException {// Todo automatisch generierter Methode Stub}} aus3. Client JS, verwendet für AJAX -Anfrage -Sitzungszeitüberschreitungen
Für jQuery
<script type = "text/javaScript"> $ (document) .ajaxComplete (Funktion (Ereignis, xhr, Einstellungen) {if (xhr.getResponseHeader ("sessionStatus") == "Timeout") {if (xhr.getRespondeSeHeader ("loginpath") {Allert ("Session Exclors," Session Excessire, "Nochmals window.location.replace (xhr.getResponseHeader ("LoginPath")); </script>AJAX -Anfrage für ExtJs
Ext.ajax.on ('RequestComplete', CheckuSerSessionStatus, this); Funktion CheckuSerSessionStatus (conn, Antwort, Optionen) {if (response.getResponseHeader ("sessionStatus") == 'Timeout') {if (response.getRespondeSheader ("Loginpath) {" alert ("Session exprisiert (" Session Excrires, Please. response.getResponseHeader ("LoginPath");} else {alert ("Timeout anfordern, bitte melden Sie sich erneut an!");}}}Wenn eine bestimmte AJAX -Anforderung von der globalen Methode nicht beeinflusst wird, kann bei Verwendung der $ .ajax () -Methode der globale im Parameter auf False festgelegt werden. Der JQuery -Code lautet wie folgt:
$ .ajax ({url: "test.html", global: false // kein globales AJAX -Ereignis auslösen})Der obige Beispiel ist der Beispielcode, den der Editor Ihnen vorgestellt hat, dass die Sitzung nach Ablauf des Ablaufs automatisch zur Anmeldeseite springt. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie mehr wissen möchten, achten Sie bitte auf die Website wulin.com!