WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 10.06.2003, 21:27   #1
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard 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?!

und dann noch eine frage: wo werden JSP-sessions am server eigentlich abgespeichert?
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 10.06.2003, 21:55   #2
kju
Senior Member
 
Registriert seit: 28.05.2002
Alter: 47
Beiträge: 141


kju eine Nachricht über ICQ schicken
Standard

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.
____________________________________
There are two rules for ultimate success in life.
1. Never tell everything you know.
kju ist offline   Mit Zitat antworten
Alt 10.06.2003, 22:06   #3
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard

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.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Alt 11.06.2003, 01:32   #4
kju
Senior Member
 
Registriert seit: 28.05.2002
Alter: 47
Beiträge: 141


kju eine Nachricht über ICQ schicken
Standard

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.
____________________________________
There are two rules for ultimate success in life.
1. Never tell everything you know.
kju ist offline   Mit Zitat antworten
Alt 11.06.2003, 04:19   #5
RaistlinMajere
Inventar
 
Registriert seit: 06.04.2001
Alter: 44
Beiträge: 2.343


Standard @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.
____________________________________
"Life is like a box of rockets," said the Marine. "You never know what you´re gonna ret."
Then he pulled the trigger of his BFG9000.
RaistlinMajere ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:20 Uhr.


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