Wo eingeloggten Benutzer "speichern"

UnkiDunki

Bekanntes Mitglied
Hi,

ich habe eine kurze Frage:

Wo "speichere" ich am elegantesten einen erfolgreich eingeloggten Benutzer? Mein Login-Dialog gibt mir bei erfolgreicher Anmeldung den entsprechenden Benutzer zurück auf den bzw. seine Rechte ich von nun an überall in der GUI Zugriff haben müsste.

Ich möchte aber auch nicht überall den User als Parameter mit durchschleusen, sondern das sollte schon eleganter geschehen.
Wie bzw. wo wird das am besten gemacht? Als z.B. statische Variable im Frame?

Danke im Voraus :)
 
S

SlaterB

Gast
stell dir erstmal vor du bleibst beim Durchschleusen, welche Klassen sind denn betroffen,
wie ist bisher das Programm strukturiert, wer macht was?
hast du eine Klasse pro größeren GUI-Abschnitt mit dem GUI-Code (Auflistung aller JButtons, Layout usw), oder separate Controller-Klassen?
hast du schon irgendwas anderes zentral organisiert, benötigen vielleicht mehrere Stellen Zugriff auf das JFrame-Objekt, wird das als Parameter durchgereicht?

statische Variablen sind unschön, nach Möglichkeit besser wirklich Parameter verwenden,
die Arbeit damit aber reduzieren, möglichst nur ein Objekt, einer eigenen Klasse ControlData oder so, wo User und andere Infos eingetragen sind,
das wird standardmäßig im Konstruktor überall übergeben, wenn in einem Programmteil der Login stattfindet, muss nicht unbedingt jeder andere neu mit Methodenaufruf/ Parameter versorgt werden, über das gemeinsame Objekt ist der User überall bekannt
 

UnkiDunki

Bekanntes Mitglied
Hi SlaterB,

danke schon mal für dein Interesse :)

Also...
stell dir erstmal vor du bleibst beim Durchschleusen, welche Klassen sind denn betroffen,
wie ist bisher das Programm strukturiert, wer macht was?
hast du eine Klasse pro größeren GUI-Abschnitt mit dem GUI-Code (Auflistung aller JButtons, Layout usw), oder separate Controller-Klassen?
hast du schon irgendwas anderes zentral organisiert, benötigen vielleicht mehrere Stellen Zugriff auf das JFrame-Objekt, wird das als Parameter durchgereicht?

Durchschleusen würde sehr viele Klasse betreffen, daher ist das kein gute Wahl.
Ich versuche alles nach dem MVC-Konzept zu realisieren, also seperate Controller-Klassen. Am ehesten würde ich sagen, dass man das JFrame Objekt durchschleusen könnte bzw. dessen Controller vielleicht? Es muss ja sowieso darauf geachtet werden, dass etwaige Änderungen in anderen Bereichen beim Schließen des Frames auch noch eine Sicherheitsabfrage nachsichziehen, daher muss es ja generell mit allen anderen Bereichen in Verbindung stehen.

statische Variablen sind unschön

Ja genau, deshalb habe ich hier mal nachfragen wollen, wie das am besten umzusetzen wäre. Ne Klasse ControlData ist natürlich eine Klasse(n) Idee, da beschränkt man alles auf einen Parameter. Das ist schon mal nicht schlecht!

Generell ist es so, dass ich im MainFrame bzw. in dessen Controller alle Panels, Dialoge etc. anlege. Von dort könnte man dann entsprechend eine ControlData-Klasse oder das Main selber übergeben...
 
S

SlaterB

Gast
wenn du eine eigene Klasse extends JFrame hast und die überall bekannt ist, dann könnte User dort eine (nicht-statische) Variable sein,
dann übernimmt JFrame-Klasse die ControlData-Funktion, ob man das später noch auftrennt wäre keine dramatische Entscheidung,

wobei genaugenommen auch eine statische Variable mit ähnlichen Aufwand später auszubauen ist,
so wichtig sind solche Entscheidungen in kleinen Programmen nicht,
mache es so wie es geeignet scheint und bei guten Gründen umstellen

drei Dinge, die man hier als ziemlich richtig gleich bedenken könnte, wie eigentlich fast immer und überall:
- besser nicht statisch
- ein Parameter mit vielen Infos ist besser als zwei einzelne, wenn man sie in einem größen Objekt zusammenlegen kann
- allgemeine Programmdaten wie User/ Rechte eher nicht in einer Swing-beschränkten Klasse wie JFrame ablegen (was vielleicht gar kein Thema ist, habe ich nur selber engebracht)
 

_Andi91

Bekanntes Mitglied
Ich würde das ganze mit einer Singleton Klasse realisieren. D.h. von dieser Klasse kann es nur eine Instanz in der Anwendung geben. In der speicherst du dir dann diese zentralen Parameter.

(hier noch ne nützliche Seite zu Singletons, bzw. allgemein Design Patterns: Singleton Design Pattern)
 

UnkiDunki

Bekanntes Mitglied
@SlaterB: Danke für die Ausführungen. Bei einem eingeloggten Benutzer bleibt es ja nicht, dann habe ich z.B. noch eine Klasse mit Formaten, wie Datumsformaten, etc. - Da müsste man sich vielleicht wirklich überlegen das Ganze irgendwie zusammenzufassen und mit einer ControlData-Klasse zu realisieren.

@_Andi91: Singletons hören sich interessant an. Danke für den Einwurf :) Wobei ich gerade lese, dass da viele Leute hier im Forum nicht so begeistert von sind...
 
Zuletzt bearbeitet:
S

SlaterB

Gast
im wesentlichen ist ein Singleton eine statische Variable, also ohne 10 Seiten Diskussion ganz normal leicht unschön, wie das mit statischen Variablen so ist,
der Rest ist eigentlich unwichtig
 

Murray

Top Contributor
Ich würde das ganze mit einer Singleton Klasse realisieren.
Ich nicht unbedingt.

Ohne jetzt den üblichen "Singletons-Sind-Ganz-Ganz-Böse"-Kanon anstimmen zu wollen: Singletons werden doch dort eingesetzt, wo es in der Natur der Sache liegt, dass bestimmte Daten innerhalb eines (Software-)Systems garantiert nur einmal auftauchen können. Da Multi-User-Umgebungen heute ja durchaus nichts ungewöhnliches sind, würde ich dem Benutzer einer Anwendung diese Eigenschaft nicht unbedingt zusprechen.

Allerdings hat Slater natürlich (wie so oft) Recht, wenn er sagt, dass bei kleineren Projekten der Aufwand, der notfalls auf einen zukommt, wenn man irgendwann mal bemerkt, dass man mit statics nicht mehr auskommt (weil man z.B. aus einer Single-User- eine Multi-User-Anwendung macht) normalerweise durchaus überschaubar bleibt; insofern muss man das nicht unbedingt dogmatisch sehen - in einer (Single-User-)Desktop-Anwendung könnte man nach Abwägen der Pros und Cons vielleicht wirklich zu dem Schluss kommen, dass ein Singleton passt - das müsste aber wirklich das Resultat sorgfältigen Nachdenkens sein; als Standard-Pattern für diese Art von Problem taugt das Singleton m.E. nicht.
 

UnkiDunki

Bekanntes Mitglied
Mhmm ok,

klar, am besten nichts statisches und Singletons gehören ja praktisch dazu. Das würde ja SlaterB's Rat ja mehr oder weniger widersprechen, wenn ich sie jetzt benutzen sollte.

Fast ich habe mit Sicherheit sagen kann, dass es eine (Single-User-)Desktop-Anwendung ist und bleiben wird, was aber nicht heisst, dass man dann nicht schon für Multi-User programmieren sollte, weil das vielleicht im nächsten Projekt anders ist und dann hätte man schon etwas, auf das man zurückgreifen könnte... von daher...

am Ende werde ich wohl doch zum "Schleuser" ;)
 

_Andi91

Bekanntes Mitglied
Naja in einer GUI Anwendung ist in der Regel ja immer nur ein User angemeldet.
Ansonsten kann man von Singletons halten was man will. Ich kann nur sagen, dass ich einige Produktivsysteme kenne wo Singletons genau für dieses Problem verwendet werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Benutzer-Dialog ohne System.in/out AWT, Swing, JavaFX & SWT 2
G Applet, Link ermitteln, dem der Benutzer gefolgt ist AWT, Swing, JavaFX & SWT 2
S Menü Item "abhaken" lassen vom Benutzer AWT, Swing, JavaFX & SWT 2
S Benutzer definierte Mous AWT, Swing, JavaFX & SWT 2
U Baum/Tree nach Benutzer anzeigen AWT, Swing, JavaFX & SWT 3
MiMa Speichern von Image als JPG auf Festplatte AWT, Swing, JavaFX & SWT 9
J Eingaben aus Textfield & ComboBox speichern und in ComboBox wieder ausgeben AWT, Swing, JavaFX & SWT 3
officialmaxl JavaFX Textfield getTextfield() in String speichern AWT, Swing, JavaFX & SWT 1
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
J Warum kann ich die Spaltennummer in der Konsole anzeigen, diese aber nicht speichern ? AWT, Swing, JavaFX & SWT 6
F Output Stream / File Dateien / Speichern AWT, Swing, JavaFX & SWT 13
D String als Textdatei in ausgewähltem Speicherplatz speichern AWT, Swing, JavaFX & SWT 32
A Swing Datei lässt sich zwar speichern, aber nicht laden (Inhalt im JTextField anzeigen) AWT, Swing, JavaFX & SWT 18
S URLS speichern von Internetseiten AWT, Swing, JavaFX & SWT 3
S Bild neu skalieren - Bild in Bild speichern? AWT, Swing, JavaFX & SWT 6
P Adressbuch Werte speichern AWT, Swing, JavaFX & SWT 21
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
G JTextField Eingabe in DB speichern AWT, Swing, JavaFX & SWT 68
B TableView als PDF speichern AWT, Swing, JavaFX & SWT 8
cool_brivk24 libGDX Welt speichern AWT, Swing, JavaFX & SWT 0
R Scene speichern AWT, Swing, JavaFX & SWT 7
D Inhalt von JTextField in MySQL speichern. Wie ? AWT, Swing, JavaFX & SWT 1
J Text in ein Textfeld eingeben und speichern AWT, Swing, JavaFX & SWT 27
S Swing jScrollPane - pro Eintrag der Liste, die jCheckBoxes Speichern die in dem Eintrag aktiviert wurden AWT, Swing, JavaFX & SWT 2
A Swing Wie Daten in der Form speichern? Array oder ArrayList AWT, Swing, JavaFX & SWT 2
I JavaFX formatierter Text in PDF speichern AWT, Swing, JavaFX & SWT 4
GenerationLost JavaFX FileChooser speichern ohne Zieldatei? AWT, Swing, JavaFX & SWT 12
A Swing Gemaltes Bild über saveDialog speichern unter AWT, Swing, JavaFX & SWT 15
S AWT Daten über TextField und Button in array speichern AWT, Swing, JavaFX & SWT 5
U Eingabe von TextField in variable speichern AWT, Swing, JavaFX & SWT 2
M Kamerabilder in ein Ordner speichern AWT, Swing, JavaFX & SWT 12
F Gezeichnetes als bild speichern AWT, Swing, JavaFX & SWT 4
I JavaFX Speichern der eingefügten Einträge beim Neustart des Programms AWT, Swing, JavaFX & SWT 2
I Variabeln speichern in Desktop Anwendung AWT, Swing, JavaFX & SWT 2
N Swing Benötige Hilfe um ein Swing Canvas zu speichern AWT, Swing, JavaFX & SWT 4
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
S JavaFX Fenstergrösse automatisch Speichern und Laden AWT, Swing, JavaFX & SWT 4
J Swing Fenstereinstellungen speichern AWT, Swing, JavaFX & SWT 2
M Combo Box auswahl in eine Datenbank speichern AWT, Swing, JavaFX & SWT 1
M ausgewählte Inhalt von ListItem inn ComboBox in der Tabelle speichern AWT, Swing, JavaFX & SWT 0
M Bild Beschreibung mit ImageIO speichern AWT, Swing, JavaFX & SWT 1
C Image laden und Speichern - Image wird auf JPanel nicht angezeigt AWT, Swing, JavaFX & SWT 4
J Swing JTable speichern AWT, Swing, JavaFX & SWT 2
C GUI öfters durchlaufen und hinterher Bild speichern AWT, Swing, JavaFX & SWT 1
S Panelzeichnung speichern AWT, Swing, JavaFX & SWT 2
O JTextfield und JComboBox Wert in SQL Database speichern AWT, Swing, JavaFX & SWT 4
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
M Bild aus JLabel resizen und speichern AWT, Swing, JavaFX & SWT 0
A Swing Malprogramm Bild speichern? AWT, Swing, JavaFX & SWT 9
G Subimage von BufferedImage speichern AWT, Swing, JavaFX & SWT 4
Y JavaFX Bild speichern und Pfad dazu abspeichern AWT, Swing, JavaFX & SWT 2
D JPanel Graphic2D als BufferedImage Speichern AWT, Swing, JavaFX & SWT 5
A JFileChooser Datei speichern AWT, Swing, JavaFX & SWT 4
B Bildverlust bei Speichern in .jar-Archiv AWT, Swing, JavaFX & SWT 3
J 2D-Grafik Bildteile in ein anderes Bild speichern AWT, Swing, JavaFX & SWT 12
B Datenübergabe zwischen Tabs und Daten speichern AWT, Swing, JavaFX & SWT 2
J JFileChooser - Datei speichern AWT, Swing, JavaFX & SWT 7
J JTree speichern AWT, Swing, JavaFX & SWT 4
kodela Teil eines Panels als Graphik speichern AWT, Swing, JavaFX & SWT 3
T Modell als XML Speichern / Laden AWT, Swing, JavaFX & SWT 9
P TextField beim klicken von JButton speichern AWT, Swing, JavaFX & SWT 17
P Öffnen, Speichern von Dat. über DialogBoxen AWT, Swing, JavaFX & SWT 10
B Zustand eines GUI speichern AWT, Swing, JavaFX & SWT 8
I Dialog zum Speichern? AWT, Swing, JavaFX & SWT 16
M JTable Drucken NullpointerException +JTable speichern AWT, Swing, JavaFX & SWT 6
J Swing JTable-Daten Speichern und bei zeilen-änderung beibehalten. AWT, Swing, JavaFX & SWT 6
M Datei Speichern unter Dialog - SWT AWT, Swing, JavaFX & SWT 3
T SWT:Datei speichern / öffnen AWT, Swing, JavaFX & SWT 6
T speichern funktioniert,aber öffnen nicht AWT, Swing, JavaFX & SWT 2
W Grafik von JFrame korrekt speichern AWT, Swing, JavaFX & SWT 7
M Position eines JLabels speichern? AWT, Swing, JavaFX & SWT 3
P nicht sichtbares JPanel / JFrame als Image speichern AWT, Swing, JavaFX & SWT 3
A BufferedImage nach dem Speichern immer schwarz AWT, Swing, JavaFX & SWT 8
J Speichern, Event, Hintergrund getAppletContext AWT, Swing, JavaFX & SWT 2
S JTable - Sortierung beibhalten / Speichern. AWT, Swing, JavaFX & SWT 3
C Checkbox-zustände in einem JFrame speichern AWT, Swing, JavaFX & SWT 8
R Graphics-Object speichern AWT, Swing, JavaFX & SWT 4
T Image skaliert in Variable speichern AWT, Swing, JavaFX & SWT 6
B Panel als Bild speichern AWT, Swing, JavaFX & SWT 11
Daniel_L Grafik erstellen, drin zeichnen und dann speichern AWT, Swing, JavaFX & SWT 2
K Swing Komponente als Bild speichern AWT, Swing, JavaFX & SWT 11
E Profilsichten speichern und dynamsich erzeugen?! AWT, Swing, JavaFX & SWT 2
N JTable direkt editierenund in Datenbanken speichern AWT, Swing, JavaFX & SWT 5
D Swing JTable in Datei speichern und laden AWT, Swing, JavaFX & SWT 3
R JComboBox Ausgabe in String speichern AWT, Swing, JavaFX & SWT 3
F Wert zu Eintrag in ComboBox speichern?! AWT, Swing, JavaFX & SWT 7
0 Ausschnitt eines JPanels als Bild speichern AWT, Swing, JavaFX & SWT 4
A Programmieren einer Agenda mit einer Liste (als Applet und .txt zum Speichern) AWT, Swing, JavaFX & SWT 7
B JTextPane formatierten Inhalt speichern AWT, Swing, JavaFX & SWT 2
R TextField auslesen & in Objekteigenschaften speichern AWT, Swing, JavaFX & SWT 22
B textdatei speichern AWT, Swing, JavaFX & SWT 9
K Swing JFileChooser zum Speichern - FileFilter AWT, Swing, JavaFX & SWT 2
jgh Speichern von User-GUI-Einstellungen AWT, Swing, JavaFX & SWT 2
B Swing Suche JFileChooser zum Speichern AWT, Swing, JavaFX & SWT 2
N gezeichnete Graphiken speichern und wieder anzeigen AWT, Swing, JavaFX & SWT 8
M AWT Datei auf server speichern und beschreiben AWT, Swing, JavaFX & SWT 7
G Swing Image speichern / 0 Byte AWT, Swing, JavaFX & SWT 7
J Aus einer JList den Inhalt als Textdatei speichern AWT, Swing, JavaFX & SWT 15
C Bild in einer Datenbank speichern? AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen


Oben