Bereiten Sie in den frühen Stadien von <br /> <br /> vor zuerst eine allgemeine Idee, welche Funktionen eindeutig haben, um zu verstehen, welche Aspekte des gesamten Moduls verwendet werden sollen, und um Ihre Mängel aus zu entdecken aus der Prozess des Tuns. Der größte Teil des technischen Fortschritts muss aus der Praxis herauskommen.
Funktion : Benutzerregistrierungsfunktion+Systemanmeldungsfunktion+Generierung des Verifizierungscode
Wissen : Fensterdesign, Datenbankdesign, JavaBean -Verpackungsattribute, JDBC -Implementierung der Datenbankverbindung, Generation des Verifizierungscode (einschließlich Farbverifizierungscode) und einige, beispielsweise die Verwendung der Registrierung von regulären Expression -Verifizierung von Benutzerregistrierung, erhalten Sie zufällig Zeichen, um Zeichenszeichenfolge zu erhalten. Kontrolle der Anzahl der Zeichen im Text usw.
Designmodul Vorschau -Karte:
Vorschau des Farbverifizierungscodes:
Verwendete Datenbank: MySQL
Datenbankdesign
Erstellen Sie eine Datenbank db_database01, die eine Tabelle TB_USER enthält, um die Registrierungsdaten der Benutzer zu speichern.
Es enthält 4 Felder
Id int (11)
Benutzername Varchar (15)
Passwort varchar (20)
E -Mail Varchar (45)
Die MySQL -Anweisung kann so gestaltet werden:
Schema erstellen db_database01; 1, "lixiyu", "lixiyu", [email protected]);
Verwenden Sie Lixiyu als Benutzernamen.
Wählen Sie Anweisung, um das erstellte Formular zu überprüfen:
Schreiben Sie JavaBean -Verpackungs -Benutzerattribute
Paket com.lixiyu.model; Public void setId (int id) {this.id = id;} public String getuseerName () {return userername;} public void setUnername (String username) {thi S.username = username;} public String getPassword () {Rückgabekennwort; } Public void setPassword (String -Passwort) {this.Password = password;} public String getemail () {return mail;} public void Seitemail (Strin G -E -Mail) {this.email = E -Mail;}}
Schreiben Sie die JDBC -Toolklasse
Platzieren Sie den Code in Bezug auf den Datenbankvorgang in der DBConfig -Schnittstelle und der DBHelper -Klasse
Die DBConfig -Schnittstelle wird verwendet, um Datenbank-, Benutzername- und Kennwortinformationscode zu speichern:
Paket com.lixiyu.util;
Um die Entwicklung von JDBC zu vereinfachen, verwendete Dbhelper die Commons DButil -Kombination.
Die DBHelper -Klasse erbt die DBConfig -Schnittstelle. Diese Klasse enthält 4 Methoden:
(1) GetConnection () -Methode: Datenbankverbindung erhalten, verwenden Sie die MySQL -Datenquelle, um die Programmierung zu vereinfachen, um Anomalien zu vermeiden, da Datenbank -Treiber geladen werden.
(2) existieren () Methode: Bestimmen Sie, ob der Eingangsbenutzername vorhanden ist.
(3) check () Methode: Wenn der Benutzer den Benutzernamen und das Kennwort eingibt, prüfen Sie, ob die Methode check () korrekt ist.
(4) SAVE () Methode: Nachdem der Benutzer rechtliche Registrierungsinformationen eingeleitet hat, speichern Sie die Informationen.
Detaillierter Code:
Paket com.lixiyu.util; commons.dbutils.QueryRunner; ; Verbindung GetConnection () {MysqldataSource mds Passwort); * * Bestimmen Sie, ob der Benutzer, der den Benutzernamen angibt, verfügbar ist. / Definieren Sie die Abfrage connnnection (); rsh);) {//, wenn es in der Liste eine Daten zurückgibt; .printstacktrace ();} endlich. Verwenden Sie die Commons Lang -Komponente, um die SQL -Injektion zu vermeiden Benutzername in QueryRunner Runner = new QueryRunner (); / / Erstellen Sie die QueryRunner -Objekt -String SQL = "Kennwort aus TB_USER aus, wob PLOTE ERGEBNISSE <FOLDER <FOLGE> RSH = NEU SCALALADLER (); result.tocharray (); // Die Passwort arrays.fill (Querypasswork D, '0'); / Das Passwort arrays.fill (Querypassword, '0'); / Wenn eine abnormale Rückgabe falsch auftritt} / * * Speichern Sie die vom Benutzer eingegebenen registrierten Informationen * * @return: Wenn der Speichern erfolgreich an true zurückgegeben wird, gibt der Erhaltungsfehler das falsche * / public static boolean speichern (Benutzer Benutzer) { QueryRunner Runner = neuer Fragenrunner (); ; // = {user.getUserName (), user.getPassword (), user.getEmail ()}; // Benutzer speichern if (result> 0) {////////wenn der Speichern erfolgreich in true return true;} else {// Wenn die Erhaltung fehlschlägt e) {e.printstacktrace ();} schließlich {gleichzeitig (conn);
System Login
1.1 Fensterdesign
Verwenden Sie das BoxLayout -Layout, um die Kontrollanordnungsmethode von oben nach unten einzustellen:
CODE CODE CODE wie folgt kopieren: contentPane.setLayout (neuer BoxLayout (contentPane, boxLayout.page_axis));
Das Fenster verwendet Steuerelemente, Textdomänen, Kennwortdomänen, Schaltflächen und andere Steuerelemente, um Code zu implementieren:
Öffentliche Klasse erweitert JFRAME ("com.sun.java.swing.plaf.nimbus.nimbuslookandFeel");} catch (throwable e) {eventQueue.invokeler (neu) nunable () {public void run () {try {login Frame = New Login (); userAmepanel = new Jpanel (); ; (); JPASSWORDFIELD (); = new JLabel ("/u9a8c/u8bc1/u7801/uff1a"); ValidateTextfield.setFont (neue Schriftart ("microsoft yahei", font.plain, 15); validatepanel.add (validateTextfield); validateTextfield ); ); CancelButton = new Jbutton ("exit"); .Add (Abbrechen);
Im Fenster anzeigen:
Public Class Swingutil {/** Nach der Größe des Containers werden die oberen linken Eckkoordinaten berechnet. )/ 2; linke Eckkoordinaten}}
1.2 Codes erhalten und zeichnen
Öffentliche Klasse Captchalabel erweitert JLabel {private statische long Serialversionuid = -963570191302793615L; Das Etikett} @Overridepublic void Paint (Grafik g) {Super. G.Drawstring (Text, 5, 25);
*Farbüberprüfungscode:
Public Class ColorfulCaptchalabel erweitert JLabel {private statische lange Serialversionuid = -963570191302793615L; .gray, color.green, color.light_gray, color.magenta, color.orange, color.pink, color.red, Color.yllow}; text Setfont (neue Schriftart ("Microsoft Yahei", font.plain, 16)); Farbe RandomUtils.Nextint (Farben.Length));
1,3 Nicht -mepty Schule
if (userername.isempty ()) {// Bestimmen Sie, ob der Benutzername leerepanepane.showMessagedialog ist (dies kann nicht leer sein! (Passwort) .ISEMPTY ()) {// Bestimmen Sie, ob das Passwort leer ist. {// Bestimmen Sie, ob der Bestätigungscode leerepanepane.showMessAntialog ist (dieser "Verifizierungscode kann nicht leer sein!", "Warninformationen", jobpane.Warning_message);
1.4 Legalitätsprüfung
if (! dbhelper.exists (Benutzername)) {// Wenn der Benutzername nicht existiert, fordert er jobpane.showmessagedialog auf (dieser "Benutzername existiert nicht!", "WarningPane.Warning_Message); ! Social.ShowMessAntialog (dies, "Verifizierungscode -Fehler!", "Warninformationen", JobParning_Message) fordern;
1.5 Zeigen Sie das Hauptfenster an
EventQueue.invokelateer (new Runnable () {@Overridepublic void run () {mainframe Frame = new Mainframe (); // Erstellen Sie das Hauptfenster -Frame. ) {e.printstacktrace ();}}});
Entwerfen Sie das Hauptfenster (relativ einfach dies):
Public MainFrame () {setDefaultCloseOperation (jframe.exit_on_close); ContentPane .SetLayout (Neue BorderLayout (0, 0)); El .SetFont (neue Schriftart ("Microsoft Yahei", Font.plain, 40); // Tag -Schriftart ContentPane.add (Tiplabel, BorderLayout.Center); // Anwendungsetikett -SetLocation (Swingutil.Centrecontainer (Getsi ZE ())) )); // das Fenster in der Mitte des Fensters stehen}
Benutzerregistrierung
1.1 Fensterdesign
Öffentliche Klassenregister erweitert JFRAME Eingabeaufforderungsinformationen anstellen/*** Starten Sie die Anwendung. (Throwable e) {e.printstacktrace ();} eventQueue.invokelo (new Runnable () {@Overridepublic void run () {try {Register Frame = neuer (); ) {e.printstacktrace ();}}});}/*** Erstellen Sie den Rahmen New JPanel (); /u540d/uff1a "); 4/u7684 /U7b57/u7b26/u7b26/u4e32 "); AbstractDocument doc = (AbstractDocument) usernametextfield (Neue Dokumente, 15) "); PasswordLabel1.setfont toSet ("Microsoft Yahei", FONT.PLAIN, 15)); PasswordPanel1.add (PasswordField1 = newwordfield (PasswordFordField1 = newwordField ( ); ABSTRCTDOCUMENT) passwordField1.getdocument (); DOC.SetDocumentFilter (New DocumentSizeFilter ( 20); .SetColumns (10); 15); DOCKUMETSIZEL, 20); .Add (E -MailPanel); ); .AddocumentListener (neue Dokumente, 45); ; Font.plain, 15); = New Jbutton ("/u53d6/u6d88"); Yahei ", font.plain, 15); buttonPanel.add (AbbrechenButton); pack (); // Passen Sie die Größe der Fenster -Setlokation automatisch an (Swingutil.CentreConTreconTreconTreconTreconTrecontr Ainer (GetSize ()); // Das Fenster in der Fensteranlage in der Fensteranzeige in der in der Anzeige in der Fensteranzeige in der in der Anzeige in der Fensteranzeige in der Anzeige in der Fensteranzeige in der Anzeige in der Fensteranzeige in der Anzeige in der Fensteranzeige in der Anzeige in der Fensteranzeige in der Anzeige in der Fensteranzeige in der Anzeige in der in der Fensteranzeige in der Anzeige in in der in der in den die Mitte des Fensters}
1.2 Verwenden Sie DocumentFilter, um die Anzahl der im Text verfügbaren Zeichen zu begrenzen
Public Class DocumentSizeFilter erweitert DocumentFilter {private int maxSize; , Int Office, String String, AttributeSet Attr) löscht BadLocationException {if (fb.getDocume (). GetLength () + String.Length ()) <= maxSize) Large -Length Super.insertString (FB, Offset, String, Attr) ; BadLocationException {if (fb.getDocument (). GetLength () + text.length () <= maxSize) {// Super.Replace (FB, Offset, Länge, Text, Attrs); } else {Toolkit.getDefaulttoolkit ().
1.3 Verwenden Sie die Schnittstelle von documentListener, um die Anzeigetextsteuerung zu implementieren.
Öffentliche Klasse documentSizedizeSizeliSizEliSizEliSIZELISIZE -Elemente documentListener {privat Jlabel Tiplabel; }@ Ouverridepublic void removenate (documentEvent e) {setipText (e);}@osuepublic voidUpDate (documentEvent e) {setipText (e);} private void setipText (documentEvent e) {document doc = e.getDocument (); /// ////////////////////////////// Erhalten Sie das Erhalten Sie das DocumentEvent e) {document doc = e.getDocument (); Dokumentobjekt Tiplabel.setforeur (color.black); %Tiplabel. () + "/" + maxSize);}}
1,4 Nicht -mepty Schule
if (userername.isempty ()) {// Bestimmen Sie, ob der Benutzername leerepanepane.showMessagedialog ist (dies kann nicht leer sein! (Password1) .iseMpty ()) {// Bestimmen Sie, ob das Passwort leer ist. ()) {// zu beurteilen, ob das Bestätigungskennwort leerepanepane.showMessAntialog ist (dies, "Bestätigung des Kennworts kann nicht leer sein!", "Warningpane.Warning_Message); (Diese "E -Mail kann nicht leer sein!", "Warninformationen", jobpane.warning_message);
1.5 Verwenden Sie die regelmäßige Ausdrucksprüfungszeichenfolge (Legitimitätsüberprüfung)
// Weizen, ob der Benutzername legal ist, wenn (! Muster.matches ("// w {5,15}", Benutzername) {jobpane.showMessagedialog (this, "Bitte geben Sie den rechtlichen Benutzernamen ein!", "Warninformationen" eingeben. , Jobpane.warning_message); Dies, dieses, dies, dieses, dieses, dieses, dieses, dieses, dieses, dieses, diese, diese, diese, diese, diese, diese, diese, diese, dieses, diese, diese, diese, diese "unterschiedlichen Passwörter geben! "," "," "Warninformationen", jobpane.Warning_message); zurück; jobpine.showMessagedialo g (this, "Bitte geben Sie die rechtliche E -Mail ein!", "Warninformationen", jobpane.warning_message); Log (this, "Benutzername bereits existiert", "Warninformationen", jobpane.warning_message);
1.6 Speichern Sie die Registrierungsinformationen
User User = New User (); If (dbHelper.save (Benutzer)) {JobPane.ShowMessAntialog (diese "Benutzerregistrierung!" Ane .Information_Message); ;}}}
Zu diesem Zeitpunkt wird ein einfaches und vollständiges Anmelderegistrierungsmodul abgeschlossen.
Das obige ist der gesamte Inhalt dieses Artikels.