Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Struts Tomcat Session Timeout

Empfohlene Antworten

Veröffentlicht

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

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

ok, aber wird der Filter automatisch ausgeführt? Wie mach ich das? Bin neu in Java&Struts.

Danke

Jens

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

mit Google meine ich Google Mail, sorry

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ß

  • 1 Jahr später...

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 ;)

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 von mOSSpOWER

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.