WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   JSP sessions (http://www.wcm.at/forum/showthread.php?t=99563)

RaistlinMajere 10.06.2003 21:27

JSP sessions
 
habe da ein grundliegendes problem. und zwar möchte ich über JSP in einer session ein paar variablen abspeichern und diese in einem anderen file wieder ausgeben, falls eine session existiert.

zu diesem zweck eröffne ich im einen file die session über

Code:

HttpSession session1 = request.getSession(true);
damit die session, falls sie noch nicht existiert, erzeugt wird. danach speichere ich meine variablen ab.

Code:

session1.setAttribute("artikel_" + id, artikel);
session1.setAttribute("preis_" + id, preis);

im anderen file möchte ich dann daraufhin erstmal auslesen, ob überhaupt eine session mit dem entsprechenden namen existiert, dies mache ich über

Code:

HttpSession session1 = request.getSession(false);
was bewirkt, daß für den fall, daß die session nicht existiert, NULL zurückgegeben wird.

nur leider funzt das nicht, die session wird immer als existent zurückgegeben. selbst wenn ich die session über

Code:

session1.invalidate();
lösche, wird noch immer nicht NULL zurückgegeben, die session existiert also. wie kanns das geben?! :confused:

und dann noch eine frage: wo werden JSP-sessions am server eigentlich abgespeichert?

kju 10.06.2003 21:55

Zitat:

wo werden JSP-sessions am server eigentlich abgespeichert?
werden gar nicht am server abgespeichert, sondern in einem session coockie am client

allerdings versteh ich dein problem nicht ganz.
mit der session wir der request eindeutig einem client zugeordnet, sprich sobald du mit
Zitat:

HttpSession session = request.getSession(true);
eine referenz auf das session objekt erzeugt hast, hat der client eine session die existiert bis er den browser schließt oder du sie mit
Zitat:

session.invalidate();
beendest. darin kannst dann soviele objekte, speichern wie du willst z.b artikel im warenkorb usw.

RaistlinMajere 10.06.2003 22:06

das ist mir alles schon klar, das problem ist ja simpel:

wenn ich eine session eröffne, wie kann ich dann nachträglich überprüfen, ob eine solche existiert? das mache ich doch normalerweise über dieselbe methode, nur mit "false" als parameter.

nur hier funzts eben nicht, da kann ich sogar die session mit invalidate(); löschen, sie wird bei einer ausgabe noch immer nicht als NULL, sondern als "org.apache.catalina.session.StandardSessionFacade @b3869c" angezeigt, existiert daher weiterhin.

kju 11.06.2003 01:32

Zitat:

Original geschrieben von RaistlinMajere
das ist mir alles schon klar, das problem ist ja simpel

und meiner meinung nach vernachlässigbar, weil wenn du deine session immer mit getSession(true); aufrufst, hast auf jedenfall ein gültiges session objekt, und falls schon eine session existiert hast eh sowieso kein prob
so hatte ich bis jetzt noch nie probs, ausser du setzt dein session timeout auf unter 10 min oder so, dann ev.

RaistlinMajere 11.06.2003 04:19

@kju
 
darum geht es nicht. ich möchte einen warenkorb realisieren, dafür erstelle ich beim 1. hinzufügen eines artikels über ein shop-file erstmal eine session.

Code:

HttpSession session = request.getSession(true);
in diese wird der artikel dann reingeschrieben. dasselbe kommando erfolgt für jeden weiteren, hinzugefügten artikel, da die session dann schon vorhanden ist, wird dieser einfach in die bestehende session hinzugefügt.

nun muß aber bei betrachtung des warenkorbs, also des warenkorb-files, eine abfrage stattfinden, ob überhaupt artikel darin vorhanden sind. ich dachte, daß ich diese abfrage so löse, in dem ich einfach danach frage, ob die session überhaupt existiert, da dies nur dann der fall sein kann, wenn mind. 1 artikel im warenkorb liegt.
diese überprüfung nach vorhandensein der session erfolgt über

Code:

HttpSession session = request.getSession(false);
wenn session!=false ist, dann ist die session vorhanden und es befinden sich sicher artikel darin, welche in folge ausgelesen und angezeigt werden können.

tja, nur das problem ist... session ist komischerweise nie false, obwohls das eigentlich sein müßte.
selbst nachdem ich über

Code:

session.invalidate();
die session probehalber manuell gelöscht habe, um ein false zu erzwingen, war das nicht der fall.


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag