Session Öffnen

Status
Nicht offen für weitere Antworten.

disconnectus

Aktives Mitglied
Ich schreibe ein Programm welche von vielen verschiedene Benutzern benutzt wird.

Am Anfang von diesem Programm Frage ich Pass und Benutzername. Mit diesen informationen möchte ich für jeder
Benutzer eine eigene Session öffnen.

Ich habe verschiedene lösungen im Kopf.

Was ist der günstigste Weg. Wie soll ich vorgehen. Gibt es eine bekannte lösung dazu.
 
was für eine Art Programm mit welchen Eingaben?
wenn eine Maus in einer GUI herumklickt, woher weißt du dann, welcher Benutzer es war, falls überhaupt mehrere in einem Java-Programm denkbar sind,

oder gehts um Client/ Server-Verbindungen? J2EE, RMI, ..?
 
So habe ich gedacht 🙂

Code:
package de.disconnectus;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;


public class LayoutVersuch extends JFrame implements ActionListener{
	JLabel label1; 
	JLabel label2;
	JLabel label3;
	JButton button1;
	JButton button2;
	JTextField textField1;
	JPasswordField passwordField1;
	static String [][] userInformations = new String [100][100] ; 


	
	LayoutVersuch () {
		
		super ();
		this.setTitle("6.0'a Hosgeldiniz.");
				
		// Set them all.	
		label1 = new JLabel("Lütfen kullanici bilgilerinizi giriniz. ");
		label1.setBounds( 50,20,200,20);
		label2 = new JLabel("Kullanici Adi :  ");
		label2.setBounds( 30,60,100,20);		 
		label3 = new JLabel("Sifre: ");
		label3.setBounds( 30,85,40,20);

		button1 = new JButton ("Tamam");
		button1.setBounds (60,120,80,30);
		button1.addActionListener(this);
		button2 = new JButton ("Iptal");
		button2.setBounds (160,120,80,30);
		button2.addActionListener(this);
		
		
		textField1 = new JTextField ();
		textField1.setBounds(120, 60, 150, 20);
		passwordField1 = new JPasswordField ();
		passwordField1.setBounds(120,85,150,20);
		 
		 // Add them all.
		this.getContentPane().add(label1);	
		this.getContentPane().add(label2);	
		this.getContentPane().add(label3);	
		this.getContentPane().add(button1);	
		this.getContentPane().add(button2);	
		this.getContentPane().add(textField1);
		this.getContentPane().add(passwordField1);
		
		// Admin Pass
		userInformations[0][0] = "benutzername";
		userInformations[0][1] = "password";
		
	}
	public static void main (String [] args) 
	{
		LayoutVersuch frame1 = new LayoutVersuch ();
		frame1.setSize(300 ,200);
		frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame1.setLayout(null);
		frame1.setVisible(true);
			
	}
			
		
	public void actionPerformed(ActionEvent arg0) {
		if (arg0.getActionCommand()== button1.getText()) 
		{
	    for (int i= 0; i<userInformations.length; i++) 
			{
				for (int j= 0; j<userInformations[i].length; j++) 
				{
					if ((userInformations [i][j]).equals(textField1.getText())
							&& (userInformations[i][j]).equals(passwordField1.getText())) 
					{
						Admin.main();	


						
					}
				}
			}		                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
		} else if (arg0.getActionCommand()== button2.getText()){
			System.exit(0);
		}		
	}
}

Bekomme ich diese Fehlermeldung :
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at de.disconnectus.LayoutVersuch.actionPerformed(LayoutVersuch.java:80)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Könnt ihr jetzt helfen?
 
userInformations [j].equals wird zur NullPointerExceptio führen, wenn das Array nicht vollständig gefüllt ist,
oder in dem if dies abfangen,

günstig ist z.B. eingabe.equals(array), da die Eingabe nicht null sein kann,
andererseits ist es auch nicht schlau 100x100 = 10.000 Felder zu prüfen, die fast alle null sind

wie soll übrigens ein Feld im Array gleichzeitig UserName + Passwort sein?

erstelle dir am besten erstmal eine Klasse UserInformationen, mit zwei Strings drin,
und verwende dann ein ArrayList von Objekten dieser neuen Klasse
 
Grundsätzlich würde so eine Containerklasse ungefähr so aussehen:
Java:
public class UserInformations {
	private String pass;
	private String username;
	
	
	// Konstruktor
	
	public UserInformations(String pass, String username) {
		this.pass = pass;
		this.username = username;
	}
	
	
	// getter/setter
	
	public String getPass() {
		return pass;
	}

	public void setPass(String pass) {
		this.pass = pass;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}
}

ne List die solche UserInformations aufnimmt kann man z.b. so erstellen:
Java:
List <UserInformations> userInformations = new ArrayList<UserInformations>();
 
was bedeutet denn ein Vergleich bei Listen?
contains() um Enthaltensein zu prüfen?
die Listenelemente von zwei Listen durchlaufen und gegenseitig vergleichen oder worum gehts?
 
Falls du einzelne Elemte aus deiner Liste vergleichen willst, dann mach das mit equals.
Java:
list.get(2).equals(list.get(3));
 
wenn du UserInformations mit equals miteinander vergleichen willst bzw. wenn du Methoden wie contains() auf eine List mit UserInformations drinnen aufrufen willst, musst du equals in der Klasse UserInformations überschreiben. (und gegebenfalls noch hashCode)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben