Problem mit webbasierter Anwendung

7bkahnt

Mitglied
Hallo, vielleicht könnt ihr mir weiter helfen.
Ich habe ein Problem für das Login meines Programms.
Der Nutzer loggt sich in einer jsp-Datei ein und der Name wird in eine Java-Klasse übergeben.

Angenommen:
Benutzer A meldet sich mit seinem Nutzernamen an. Dann wird in eine Tabelle geschaut ob es diesen Namen gibt, wenn ja wird die ID ausgelesen und auf eine globale statische Variable UserID gespeichert.
Und genau da liegt das Problem.
Diese ID brauche ich später, wenn der Benutzer irgendwelche Datensätze ändert, weil ich die ID dann in eine Tabelle schreibe.

Wenn sich jetzt aber Benutzer B einloggt, wird ja UserID überschrieben, sodass wenn Benutzer A einen Datensatz ändert die ID von Benutzer B angegeben wird.

Wenn der Benutzer den Login-Button betätigt, wird DBVerbindung() aufgerufen worin die Verbindung aufgebaut wird und der User verglichen wird und somit UserID gesetzt wird.
Wenn er einen Datensatz ändern möchte, wird change() aufgerufen, wo ich ja wiederum dann UserID benötige,um Sie in die Tabelle einzutragen. Somit muss sie ja global und statisch sein.

Ich hatte das Problem zunächst mittels eines hidden-Feldes in der jsp gelöst. Aber letztendlich gibt es dann doch wieder das Problem, dass die UserID- Variable in der Java-Klasse global und statisch ist.
Denn wenn Nutzer A und B gleichzeitig den Ändern-Button im Bearbeiten-Formular klicken, werden ja gleichzeitig 2 unterschiedliche UserID´s bzw. nur die Letztere auf die eine UserID in der Java-Klasse geschrieben.

Habt ihr vielleicht eine Idee? Wäre echt genial. Vielleicht ist es irgendwie möglich für jeden Nutzer eine eigene UserID zur Verfügung zu stellen, nur leider fällt mir da keine Lösung ein.

grüsse
 
Zuletzt bearbeitet:
Hi,
ich verstehe zwar nicht, was du da vor hast, aber warum speicherst du deine ID nicht einfach in der Session?

Grüße
Peter
 
Das Problem ist, dass ich Connection-Pooling verwende und somit nicht jeder User eine eigene SessionID bekommt.
Ansonsten könnt ich das ganze ja in eine Hashmap speichern. Nur bekommt eben nicht jeder User eine eigene SessioID.
 
Bei einem WebServer bekommt definitiv jeder User seine eigene Session. Connection-Pooling ist ewas völlig anderes. Ich weiß auch nicht, wieso du das in einer Hashmap speichern willst? Wenn dein User sich einloggt, bekommt er automatisch vom Server eine Session zugeordnet. in die kannst du doch u.a. deine UserID packen. Jedesmal, wenn du die ID brauchst, zb beim Speichern von irgendwas in der DB, holst du die ID wieder aus der Session.

Grüße
Peter
 
Okay, das war das Problem. Danke :).
Ich habe nur an die Datenbanksessions gedacht.
Okay, ideal dann versuche ich mich mal weiter.
Hatte bisher nicht viel mit Webanwendungen am Hut.

Wenn Nutzer A sich am Anfang einloggt, holt er sich eine Datenbanksession und bekommt also vom Webserver eine eigene SessionID.
Danach beendet er die Datenbankverbindung und gibt die Datenbanksession wieder frei( in den Pool).
Wenn er dann allerdings etwas bearbeiten will, baut er ja eine neue Datenbankverbindung auf und bekommt eine andere Datenbanksession.
Die SessionID vom Webserver bleibt aber gleich oder wie? Weil das wäre ja wichtig um seine UserID rauszubekommen.

Hier bekommt man ja echt schnell Hilfe!
Danke euch schonmal und schönes Wochenende !
 
Hallo,

die Session-ID verfällt erst nach einer best. Zeit der Inaktivität des Benutzers (die du u.a. auch selbst festlegen kannst, wenn du Zugriff auf die Serverkonfiguration hast).

Die Datenbanksession ist total unabhängig von der User-Session. Du solltest auch immer schauen, dass die DBSession nach "jeder Abfrage" (wenn du unmittelbar z.B. 3 hintereinander machst dann natürlich nicht) an den Server zurück gegeben wird.

Viele Grüße, Dirk
 
Zurück