Préparez <br /> dans les premiers stades de <br />, tout d'abord, vous devez clairement avoir une idée générale, quelles fonctions à réaliser, pour comprendre quels aspects de l'ensemble du module à utiliser et pour découvrir vos lacunes à partir de vos lacunes à partir de vos lacunes le processus de faire. La plupart des progrès techniques doivent être sortis de la pratique.
Fonction : Fonction d'enregistrement de l'utilisateur + Fonction de connexion du système + Code de vérification de génération
Connaissances : conception de fenêtres, conception de la base de données, attributs d'emballage Javabean, implémentation JDBC de la connexion de la base de données, code de vérification (y compris le code de vérification des couleurs) La technologie de génération et d'autres telles que l'utilisation d'informations d'enregistrement utilisateur de vérification d'expression régulière, obtiennent des caractères au hasard pour obtenir des caractères, la chaîne, Contrôle du nombre de caractères dans le texte, etc.
Carte d'aperçu du module de conception:
Aperçu du code de vérification des couleurs:
Base de données utilisée: MySQL
Conception de la base de données
Créez une base de données db_database01, qui contient un tableau TB_USER pour enregistrer les données d'enregistrement des utilisateurs.
Il contient 4 champs
id int (11)
Nom d'utilisateur Varchar (15)
mot de passe varchar (20)
Email Varchar (45)
La déclaration MySQL peut être conçue comme ceci:
Créer un schéma DB_DATABASE01; Utilisez DB_DATABASE01; 1, "lixiyu", "lixiyu", [email protected]);
Utilisez lixiyu comme nom d'utilisateur.
Sélectionnez Instruction pour vérifier le formulaire créé:
Écrivez les attributs de l'utilisateur de l'emballage JavaBean
package com.lixiyu.model; Public void setID (int id) {this.id = id;} public String getUseernerName () {return username;} public void setUsername (String username) {thi s.username = username;} public String getPassword () {return mot de passe; } Public void setPassword (chaîne mot de passe) {this.password = mot de passe;} public String getEmail () {return e-mail;} public void seitemail (strin g e-mail) {this.email = e-mail;}}
Écrivez la classe d'outils JDBC
Placez le code lié à l'opération de base de données dans l'interface DBConfig et à la classe DBHelper
L'interface DBConfig est utilisée pour enregistrer la base de données, le nom d'utilisateur et le code d'information du mot de passe:
package com.lixiyu.util; interface publique dbconfig {string databasename = "db_database01";
Pour simplifier le développement de JDBC, DBHelper a utilisé la combinaison DBUtil Commons.
La classe DBHelper hérite de l'interface DBConfig.
(1) Méthode GetConnection (): Obtenez la connexion de la base de données, utilisez la source de données MySQL pour simplifier la programmation pour éviter les anomalies en raison des pilotes de base de données de chargement.
(2) Méthode EXIST (): Déterminez si le nom d'utilisateur d'entrée existe.
(3) Vérifier () Méthode: Lorsque l'utilisateur entre dans le nom d'utilisateur et le mot de passe, vérifiez si la méthode Check () est correcte.
(4) SAVE () Méthode: Une fois que l'utilisateur entre les informations d'enregistrement légales, enregistrez les informations.
Code détaillé:
package com.lixiyu.util; Commons.dbutils.queryrunner; ; Connexion getConnection () {MySQLDataSource mds = new MySQLDataSorce (); Mot de passe); * * Pour déterminer si l'utilisateur qui spécifie le nom d'utilisateur est disponible. / Définir la question de la question (); Rsh);) {// Si il y a des données Retour dans la liste; .PrintStackTrace ();} Enfin. Utilisez le composant Commons Lang pour éviter l'injection SQL * * @return: Retour à true, Erreur Retour à False * / Public Static Boolean Check (String Username, char [] Mot de passe) {Username = StringScapeUtils.EscapesQL (nom d'utilisateur); Nom d'utilisateur de saisie sur QueryRunner Runner = new queryRunner (); / / Créer la chaîne d'objet QueryRunner SQL = "SELECT Mot de passe dans TB_USER WHERERNAME = '" + Username + "';"; Plot ResultsEthandler <objet> rsh = new Scalalandler (); result.tochArray (); // les arrayons de mot de passe.filt (querypasswork d, '0'); / Le mot de passe Arrays.fill (queryPassword, «0»); / Si un rendement anormal se produit faux} / * * Enregistrer les informations enregistrées entrées par l'utilisateur * * @return: si la sauvegarde est renvoyée avec succès à TRUE, l'échec de préservation renvoie le faux * / public static booléen enregistrer (utilisateur utilisateur) { queryRunner Runner = new questionrunner (); ; // Enregistrer l'utilisateur if (résultat> 0) {//////// / Si la sauvegarde est retournée avec succès à True Return True;} else {// Si la préservation échoue, return return false;}} catch (sqlexception e) {e.printStackTrace ();} Enfin {Equietly (Conn);
Connexion du système
1.1 Design de fenêtre
Utilisez la disposition BoxLayout pour définir la méthode de l'organisation de contrôle de haut en bas:
Copier le code du code comme suit: contentPane.SetLayout (new BoxLayout (contentPane, boxlayout.page_axis));
La fenêtre utilise des contrôles, des domaines de texte, des domaines de mot de passe, des boutons et d'autres contrôles pour implémenter le code:
Classe publique étend JFRAME {Private STATIC STATIQUE Long ("" com.sun.java.swing.pllaf.nimbus.nimbuslookAndFeel ");} catch (throwable e) {eventQueue.invokeler (new r) innable () {public void run () {try {ligin frame = new connection (); usernamepanel = new JPanel (); ; (); jpasswordfield (); = new JLabel ("/ u9a8c / u8bc1 / u7801 / uff1a"); ValidateTextField.Setfont (New Font ("Microsoft Yahei", Font.Plain, 15); ValidatePanel.Add (ValidateTextField); ValidateTextField.SetColumns (5); Randomttomtt ext = RandomStringUtils.Randomalphanumec )); )); Cancelbutton = new JBUTTON ("Exit"); .Add (AnnulerButton);
Affichage dans la fenêtre:
Classe publique SwingUtil {/ ** Selon la taille du conteneur, les coordonnées du coin supérieur gauche sont calculées. ) / 2; Coordonnées du coin gauche}}
1.2 Code de vérification d'obtention et de dessin
Classe publique CaptChalabel étend JLabel {private statique Long SerialVersionUID = -963570191302793615l; L'étiquette} @OverRidePublic Void Paint (Graphiques G) {Super. G.Drawstring (texte, 5, 25);
* Code de vérification des couleurs:
Classe publique ColorfulCaptChalabel étend JLabel {private static final SerialVersionUID = -963570191302793615l; .Gray, Color.Green, Color.light_Gray, Color.Magenta, Color.Orange, Color.pink, Color.Red, Color.yllow}; Texte = Texte; SetFont (new Font ("Microsoft Yahei", Font.Plain, 16)); Color RandomUtils.Nextint (Color
1.3 École non emprelle
if (username.isempty ()) {// Déterminez si le nom d'utilisateur est videpanepane.showMessageDialog (this, "le nom d'utilisateur ne peut pas être vide!", "Informations d'avertissement", jobpane.warning_message);} if (ne w String String; (Mot de passe) .iSempty ()) {// Déterminez si le mot de passe est vide jobpane.showMessageDialog (this, "le mot de passe ne peut pas être vide!", "WarningPane.Warning_Message); return;} if (valide ate.isempty ())) {// Déterminez si le code de vérification est videpanepane.showMessageDialog (ceci, le code de vérification ne peut pas être vide! "," Informations d'avertissement ", jobpane.warning_mesage);}}
1.4 Vérification de la légalité
if (! dbhelper.exists (nom d'utilisateur)) {// Si le nom d'utilisateur n'existe pas, cela invitera jobpane.showMessageDialog (ce ! Pour promploir Jobpane.ShowMessageDialog (ceci, "Vérification Code Erreur!", "Informations d'avertissement", JobParning_Message);
1.5 Afficher la fenêtre principale
EventQueue.Invokelateer (new Runnable () {@OverRidePublic void run () {mainframe frame = new MainFrame (); // Créer la fenêtre principale trame.setVisible (true); // définir la fenêtre principale pour voir} catch (exception e e ) {e.printStackTrace ();}}});
Concevez la fenêtre principale (relativement simple ceci):
Public mainframe () {setDefaultCloseOperation (jframe.exit_on_close); ContentPane .SetLayout (new BorderLayout (0, 0)); El .setfont (new FONT ("Microsoft Yahei", Font.Plain, 40); // Set Tag Fonts ContentPane.Add (TipLabel, BorderLayout.Center); // Application Label SetLocation (SwingUtil.CentRecontainer (Getsi Ze ()) ));
Enregistrement des utilisateurs
1.1 Design de fenêtre
Le registre public étend JFRAME {/ **** / Private Static Long SerisonUid = 2491294229716316338l; Afficher les informations de l'invite / *** Lancez l'application. * / Public static void main (String [] art) {try {uimanager.setLookAndFeel ("com.sun.java.plaf.nimbus.ni.ni MbuslookAndFeel");} Catch (Throwable E) {e.printStackTrace ();} eventQueue.invokelo (new Runnable () {@OverRidePublic void run () {try {registre frame = newer (); f ride.setVisible (true);} catch (exception e e ) {E.PrintStackTrace ();}}});} / *** Créer le cadre. * / public registre () {Setttitle ("/ u7528 / u6ce8 / u518c"); New JPanel (); / u540d / uff1a "); uernameLabel.setfont to. w jTextfield (); userNameTextField.SetToolTITT U7684 / U7b57 / u7b26 / u7b26 / u4e32 "); abstractDocument doc = (abstractDocument) userNameTextField.getDocument (); doc.setDocumentFilter (new DocumentSizeFilter (15)); // Limite la longueur du caractère dans le domaine de texte à 15DOC.ADDDDOCUMENTS); (Nouveau documentaire, 15); utilisateur. "); PasswordLabel1.SetFont Toset (" Microsoft Yahei ", Font.Plain, 15)); PasswordPanel1.Add (PasswordField1 = NewwordField (PasswordfordField1 = NewwordField (); AbstrctDocument) PasswordField1.getDocument (); DOC.SetDocumentFilter (New DocumentSizeFilter (get 20)); .SetColmans (10); 15)); DarmeenSizeSizer, 20)); .Add (EmailPanel); ); .AddDocumentListener (Nouveau DocumentsiSeListERGE, 45); ; , Font.Plain, 15); = New Jbutton ("/ u53d6 / u6d88"); Yahei ", Font.Plain, 15); ButtonPanel.add (CancelButton); Pack (); // ajustez automatiquement la taille de la fenêtre SetLocation (SwingUtil.CentReContreContreContreContreContreContr Ainer (getSize ())); // Laisse afficher la fenêtre dans le milieu de la fenêtre}
1.2 Utilisez DocumentFilter pour limiter le nombre de caractères disponibles dans le texte
La classe publique DocumentSizeFilter étend DocumentFilter {private int maxSize; Int Office, String String, AttributeSet ATR) lève BadLocationException {if (fb.getDocuMe (). GetLength () + String.Length ()) <= MaxSize) Large -length Super.InsertString (FB, Offset, String, att) ; BadLocationException {if (fb.getDocument (). GetLength () + text.length () <= maxSize) {// super.replace (fb, offset, longueur, text, attrs); } else {Toolkit.getDefaultToolkit ().
1.3 Utilisez l'interface DocumentListener pour implémenter le contrôle du texte d'affichage.
Classe publique documentée DocumentSizeSener {Private Jlabel TipLabel; IntonSize) {IntonSize) {This.MaxSize) } @ OuverridePublic void removenate (documentEvent e) {settripText (e);} @ osuepublic voidUpdate (documentEvent e) {settripText (e);} private void settripText (documentEvent e) {document doc = e.getDocument (); // / Obtenir le Document Object TipLabel.SetForeground (Color.Black); % TipLabel. () + "/" + maxsize);}}
1.4 École non emprelle
if (username.isempty ()) {// Déterminez si le nom d'utilisateur est videpanepane.showMessageDialog (this, "le nom d'utilisateur ne peut pas être vide!", "Informations d'avertissement", jobpane.warning_message);} if (ne w String String; (Mot de passe1) .iSempty ()) {// Déterminez si le mot de passe est vide Newspane.showMessageDialog (this, "le mot de passe ne peut pas être vide!", "WarningPane.Warning_Message); return;} if (new S Tring (Password2). Isemption ()) {// à juger si le mot de passe de confirmation est videpanepane.showMessageDialog (this, "confirmant le mot de passe ne peut pas être vide!", "WarningPane.Warning_Message); pty ()) {{// Déterminer si l'e-mail est videpanepane.showMessageDialogoG (Ceci, "Email ne peut pas être vide!", "Informations d'avertissement", Jobpane.warning_Message);}
1.5 Utilisez une chaîne de vérification d'expression régulière (vérification de la légitimité)
// blé si le nom d'utilisateur est légal si (! Pattern.matches ("// w {5,15}", nom d'utilisateur) {jobpane.showMessageDialog (ceci, "Veuillez entrer le nom d'utilisateur légal!", "Informations d'avertissement" , Jobpane.warning_message); Ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, ceci, cette "entrée de mots de passe différents! "," "," "" Informations d'avertissement ", jobpane.warning_message); return;} // Vérifiez si l'adresse e-mail est légitime si (! Pattern.matches (" // w + @ / w + / w + ", e-mail) { jobpine.showMessagedialo g (ceci, "Veuillez saisir l'e-mail légal!", "Informations d'avertissement", jobpane.warning_message); Log (ceci, "nom d'utilisateur a déjà existé", "Informations d'avertissement", Jobpane.warning_Message);}}
1.6 Enregistrer les informations d'enregistrement
Utilisateur utilisateur = new User (); User.SetUrName (nom d'utilisateur); user.setpassword Ord1, «0»); If (dbhelper.save (utilisateur)) {jobpane.showMessageDialog (ce "Enregistrement de l'utilisateur!" ANE .Information_Message); ;}}}
À ce stade, un module d'enregistrement de connexion simple et complet est terminé.
Ce qui précède est tout le contenu de cet article.