Gast JDK Geschrieben 20. Dezember 2006 Geschrieben 20. Dezember 2006 Hallo, ich muss in einer Tomcat/Struts Web Appl. einen automatischen Redirect auf eine .jsp einbauen nachdem die HttpSession abgelaufen ist. Der Timeout ist ja im web.xml configuriert. In der App. gibt es die Klasse HttpSessionListener die die Methoden sessionCreated und sessionDestroyed enthält.Hab gesehen das die Methode sessionDestroyed automatisch bei Session Timeout ausgeführt wird. Meine Idee war jetzt das ich innerhalb diese Methode ein Redirect auf die .jsp mache aber ich bekomme immer eine Meldung "ignore redirect". Kann mir jemand sagen wie man das am besten lösen kann. Wie gesagt, das ganze muss automisch passieren, also ohne das der User was macht. Vielen Dank Jens Zitieren
Jaraz Geschrieben 20. Dezember 2006 Geschrieben 20. Dezember 2006 Hi, du kannst zum Beispiel mit einem Filter überprüfen ob eine Sessionvariable existiert und falls nicht mit response.sendRedirect(...) auf eine entsprechende Seite redirecten. Gruß Jaraz Zitieren
Gast JDK Geschrieben 20. Dezember 2006 Geschrieben 20. Dezember 2006 ok, aber wird der Filter automatisch ausgeführt? Wie mach ich das? Bin neu in Java&Struts. Danke Jens Zitieren
perdian Geschrieben 20. Dezember 2006 Geschrieben 20. Dezember 2006 ok, aber wird der Filter automatisch ausgeführt?Das ist Sinn und Zweck des ganzen: http://wiki.java.net/bin/view/Javapedia/ServletFilter Zitieren
Gast JDK Geschrieben 22. Dezember 2006 Geschrieben 22. Dezember 2006 Ok, aber das ganze soll ohne Request vom Client geschehen. So wie z.B bei Google, du logst dich ein machst aber nichts weiter, nach einer gewissen Zeit gehst Du auf die Seite zurück und du siehst das du auf eine andere Seite weitergeleitet wurdest. Bei meinem Internetbanking ist das übrigends auch so. Wie macht man sowas? Danke Jens Zitieren
Gast JDK Geschrieben 22. Dezember 2006 Geschrieben 22. Dezember 2006 mit Google meine ich Google Mail, sorry Zitieren
mOSSpOWER Geschrieben 23. Dezember 2006 Geschrieben 23. Dezember 2006 Hallo, also ich würde das mit JavaScript machen, d.h. einen Timer laufen lassen, der immer "angeschmissen" wird, wenn die Seite geladen wird .. .sind dann z.B. zwei Minuten (= z.B. Session-Timeout-Zeit) abgelaufen (der Kunde hat keine Aktionen ausgeführt, da ja sonst die Seite neu geladen wird und der Timer neu gestartet), sendet die Seite automatisch einen Request (mit den dementsprechenden Parameter/n) an das Servlet oder Filter oder whatsoever ... dann einfach einen Redirect auf die gewünschte Seite. Anders kann ich mir das jetzt gar nicht vorstellen, dass das technisch realisierbar wäre. Gruß Zitieren
-Peace- Geschrieben 15. Juli 2008 Geschrieben 15. Juli 2008 ich würde bei dem ServletFilter bleiben da dies die eleganteste Lösung ist, da du das hier an einer zentralen Stelle implementieren kannst. Ein ServletFilter wird vor jedem Request aufgerufen (in dem bereich in dem er zuständig ist). Zusätzlich könntest du vielleicht in einer kleinen JSP eine JavaScript funktion einbauen die einfach die Seite neu läd. Diese kannst du dann dort einbinden wo du sie brauchst. Wenn du nur mit JavaScript arbeitest hast du das problem, dass du bei einem wirklichen ServerTimeout z.B. nach 30mins ins leere läufst. Ich kenne mich mit Struts nicht so aus aber mit JSF und dort ist es so, dass wenn die Session ungültig ist und du versucht eine weitere JSF-Anfrage zu starten du garantiert einen Fehler bekommen wirst, da alle nötigen Beans gelöscht wurden... ich denke das is bei struts ähnlich. Du solltest dich vielleicht auch noch erkundigen ob struts sowas wie einen Filter bereits zur verfügung hat. Bei JSF gibt es z.B. den PhasenListener... Des weiteren geht ein Filter auch wenn JS deaktiviert ist Zitieren
mOSSpOWER Geschrieben 15. Juli 2008 Geschrieben 15. Juli 2008 (bearbeitet) ich würde bei dem ServletFilter bleiben da dies die eleganteste Lösung ist, da du das hier an einer zentralen Stelle implementieren kannst. Ein ServletFilter wird vor jedem Request aufgerufen (in dem bereich in dem er zuständig ist). Zusätzlich könntest du vielleicht in einer kleinen JSP eine JavaScript funktion einbauen die einfach die Seite neu läd. Diese kannst du dann dort einbinden wo du sie brauchst. Wenn du nur mit JavaScript arbeitest hast du das problem, dass du bei einem wirklichen ServerTimeout z.B. nach 30mins ins leere läufst. Ich kenne mich mit Struts nicht so aus aber mit JSF und dort ist es so, dass wenn die Session ungültig ist und du versucht eine weitere JSF-Anfrage zu starten du garantiert einen Fehler bekommen wirst, da alle nötigen Beans gelöscht wurden... ich denke das is bei struts ähnlich. Du solltest dich vielleicht auch noch erkundigen ob struts sowas wie einen Filter bereits zur verfügung hat. Bei JSF gibt es z.B. den PhasenListener... Des weiteren geht ein Filter auch wenn JS deaktiviert ist Hallo, der Thread ist zwar schon uralt aber der Threadersteller hatte das Problem, dass er Zitat einen automatischen Redirect wünscht, wenn die Session abgelaufen ist ohne dass der User agiert, und das (automatisch) geht nur mit JavaScript. Das Handling auf dem Server würde ich auch in einen Filter bauen. Gruß Bearbeitet 15. Juli 2008 von mOSSpOWER Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.