# Browser schließen - Nachricht im Servlet ?



## KSG9|sebastian (14. Okt 2005)

Hi Leute..

bekommt ein Servlet Nachricht davon, wenn der Benutzer den Browser schließt ?
Wird eine Methode aufgerufen ?

Gruß Sebastian


----------



## Mag1c (14. Okt 2005)

Nein!

Gruß
Mag1c


----------



## KSG9|sebastian (14. Okt 2005)

fuck...

wird ne Session eigentlich beendet wenn der Browser geschlossen wird ?


----------



## daLenz (14. Okt 2005)

Ja!

greetz


----------



## Mag1c (14. Okt 2005)

Aehm, nicht unbedingt. Da auch der Servlet-Server keine Info bekommt, wenn der Browser geschlossen wird, kann er die Session nicht einfach zu machen. Das wird über nen Timeout realisiert.

Gruß
Mag1c


----------



## Bleiglanz (14. Okt 2005)

Nein

deshalb gibts da nen Timeout

der Server kriegt nix davon mit, wenn beim Client der Rechner explodiert


----------



## KSG9|sebastian (14. Okt 2005)

ich hab folgendes Problem mit Portlets..

Ich muss 3 Objekte von der doView-Methode (anzeigen) in die actionPerformed (wird bei nem Formular-Submit aufgerufen) transportieren.

Problem ist, dass ich im Request nix speichern kann, und Benutzer-spezifisch _darf_ ich es nicht speichern (keine Session).
Wenn ich es im Request speicher kommt es nie an, weil

1. doView-Aufruf (Objekte in Request schreiben)
2. Portlet wird angezeigt (Request wird geleert und neu generiert, automatisch)
3. Formular submit und actionPerformed wird aufgerufen

Somit komm ich nicht an die Variablen im Request ran. 
Wenn ich es als Instanz-Variablen speichern, dann hab ich keine Benutzerspezifische Unterscheidung...

Gibts da irgendne Möglichkeit


----------



## Mag1c (14. Okt 2005)

Hi,

was sind das für Objekte und wo kommen die her ? Du müsstest die Objekte selbst oder IDs für die Objekte im Formular als versteckte Elemente unterbringen. Dann kommen die auch beim submit wieder auf den Server.
(weiß nicht, ob das mit Protlets auch funktioniert, hab damit noch nix gemacht).

Gruß
Mag1c


----------



## KSG9|sebastian (14. Okt 2005)

> IDs für die Objekte



IDs für Objekte ? Hum ? 
Aber stimmt..ich könnte hidden-Felder benutzen..oder ?

Kann ich in nem Hidden-Feld ein ganz normales Objekt speichern, also eine eigene Klasse, und dass dannach wieder casten ?

Gruß Seb


----------



## Dukel (14. Okt 2005)

Bei PHP gibt es funktionen, die auslesen ob der User die Verbindung abgebrochen hat oder es einen Timeout gab: http://www.php.net/manual/de/features.connection-handling.php
Evtl. gibts sowas auch für Java.


----------



## Mag1c (14. Okt 2005)

Hi,

naja den SessionTimeout bekommt man sicher raus. Das mit der abgebrochenen Verbindung bezieht sich auf einen laufenden Request der im Java sicherlich durch eine Exception signalisiert wird (weiß ich grad nicht wie genau).

Du könntest sicher auch ganze Objekte im Formular hinterlegen (Stichwort: Serialisierung von Objekten). Ich finde die Idee dann aber doch nicht so toll. Habe noch eine Idee bzgl. IDs. Falls deine Objekte selbst keine eigenen IDs haben und/oder sie relativ kuzlebig sind und jeder Nutzer seine eigenen hat, könntest du diese Objekte in einer Art Cache ablegen und bei einem Request jeweils eine eigene ID generieren.

Also beim Anzeigen:

String id = ObjectCache.register(currentTime, obj);
... id im Formular einbauen ...

und später beim submit:

Object obj = ObjectCache.get(id);
... evtl. gleich aus dem Cache löschen ...

Gruß
Mag1c


----------



## KSG9|sebastian (14. Okt 2005)

hm..das hört sich gar net so schlecht an..

ich werds mal probieren..!


----------

