Cet article décrit brièvement l'utilisation de Javabean pour réaliser la connexion de l'utilisateur, y compris la connexion, l'enregistrement et la déconnexion des utilisateurs.
1. À propos de Javabean
Javabean est un composant réutilisable écrit dans la langue java. Pour être écrit comme un Javabean, la classe doit être spécifique et publique, et a un constructeur sans paramètres. Les Javabeans exposent les domaines internes aux propriétés des membres, définissent et obtiennent des méthodes en fournissant des méthodes publiques conformes au modèle de conception cohérent. Comme nous le savons tous, les noms d'attributs sont conformes à ce modèle, et d'autres classes Java peuvent découvrir et manipuler les propriétés de ces Javabeans par le biais de mécanismes d'introspection.
2. Architecture du système
2.1 Diagramme de cas d'utilisation de connexion
2,2 nombres de pages
2.3 Diagramme d'architecture du système
2.4 Conception de la base de données
Cet exemple utilise une base de données Oracle
Le tableau utilisateur comprend l'ID, le nom d'utilisateur, le mot de passe, le courrier électronique et un total de 4 champs.
- Créer une table Créer la table P_USER (ID VARCHAR2 (50) Not Null, nom d'utilisateur Varchar2 (20), mot de passe VARCHAR2 (20), Email Varchar2 (50)) Utilisateurs d'espace de table PCTFREE 10 INITRANS 1 MAXTRANS 255 Storage (initial 64 Minextents 1 Maxextents Unlimited); - Ajouter des commentaires à la table Commentaire sur la table P_USER est «Table utilisateur»; - Ajouter des commentaires aux colonnes commentaire sur la colonne P_User.id est 'id'; Commentaire sur la colonne P_USER.USERNAME est «nom d'utilisateur»; Commentaire sur la colonne P_User.Password est «mot de passe»; Commentaire sur la colonne P_USER.EMAIL est «e-mail»;
3. Écriture javabean
3.1 Développement du traitement de la base de données sous-jacent de Javabeans
Dbacess.java
Package com.baosight.bean; import java.sql.connection; Importer Java.Sql.DiverManager; import java.sql.resultSet; import java.sql.sqlexception; import java.sql.statement; / ** Classe de fonctionnement de la base de données * <p> Titre: DBACESS </p> * <p> Description: Todo </p> * <p> Company: </p> * @Author Yuan * @Date 2016-5-22 12:40:24 PM * / Public Class Dbacess {private String Driver = "Oracle.jdbc.Driver.OracledRiver"; Url de chaîne privée = "JDBC: Oracle:" + "Thin: @ 127.0.0.1: 1521: ORCL"; nom d'utilisateur de chaîne privée = "Scott"; Private String Password = "Tiger"; connexion privée conn; déclaration privée STM; Résultat privé Rs; // Créer une connexion publique booléen createConn () {booléen b = false; essayez {class.forname (pilote); // Chargez Oracle Driver Conn = driverManager.getConnection (URL, nom d'utilisateur, mot de passe); b = true; } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); } // Obtenez la connexion Catch (classNotFoundException e) {// TODO Block de capture générée automatiquement e.printStackTrace (); } return b; } // Modifier la mise à jour Boolean publique (String SQL) {Boolean b = false; essayez {stm = conn.createStatement (); STM.Execute (SQL); b = true; } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); } return b; } // requête publique void requête (String sql) {try {stm = conn.creatEstatement (); RS = STM.ExecuteQuery (SQL); } catch (sqlexception e) {// TODO Block de catch généré automatiquement e.printStackTrace (); }} // juger s'il y a des données publiques booléen suivant () {boolean b = false; essayez {if (Rs.Next ()) {b = true; }} catch (sqlexception e) {// TODO Block de capture générée automatiquement e.printStackTrace (); } return b; } // Obtenez la valeur du champ de table Public String getValue (Field String) {String Value = NULL; essayez {if (rs! = null) {value = rs.getString (champ); }} catch (sqlexception e) {// TODO Block de capture générée automatiquement e.printStackTrace (); } RETOUR-valeur; } // Fermez la connexion publique void CloseConn () {try {if (conn! = Null) {conn.close (); }} catch (sqlexception e) {// TODO Block de capture générée automatiquement e.printStackTrace (); }} // Close Statement public void CloserStM () {try {if (stm! = Null) {stm.close (); }} catch (sqlexception e) {// TODO Block de capture générée automatiquement e.printStackTrace (); }} // Close ResultSet public void closers () {try {if (rs! = Null) {Rs.close (); }} catch (sqlexception e) {// TODO Block de capture générée automatiquement e.printStackTrace (); }} public String getDriver () {return Driver; } public void setDriver (String Driver) {this.driver = driver; } public String getUrl () {return url; } public void setUrl (string url) {this.url = url; } public String getUserName () {return username; } public void setUsername (String username) {this.userName = username; } public String getPassword () {return mot de passe; } public void setPassword (String Motword) {this.password = mot de passe; } instruction publique getStm () {return stm; } public void setStm (instruction stm) {this.stm = stm; } public resultSet getrs () {return rs; } public void setrs (resultSet rs) {this.rs = rs; } public void setConn (connexion conn) {this.conn = conn; } Connexion publique getConn () {return Conn; }}La classe de fonctionnement de la base de données ci-dessus utilise JDBC pour se connecter à la base de données et encapsure des méthodes telles que la connexion à la base de données, l'interrogation, la modification et la fermeture des ressources.
3.2 Développer des composants de logique commerciale javabean
Userbean.java
Package com.baosight.bean; import com.baosight.util.generateuuid; / ** * <p> Titre: Userbean </p> * <p> Description: Todo </p> * <p> Company: </p> * @author yuan * @date 2016-5-22 1:05:00 pm * / public class userbean {// ligin vérification Vérification publique Boolean valid (String Username, String Passway) {boolean isvalid = false; Dbacess db = new dbacess (); if (db.createConN ()) {String sql = "select * from p_user où username = '" + username + "' et mot de passe = '" + mot de passe + "'"; DB.Query (SQL); if (db.next ()) {isValid = true; } db.closers (); db.closeSestm (); db.closeConn (); } return isValid; } // Registre Vérification publique booléen iSexist (nom d'utilisateur de chaîne) {boolean isvalid = false; Dbacess db = new dbacess (); if (db.createConC ()) {String sql = "select * from p_user où username = '" + username + "'"; DB.Query (SQL); if (db.next ()) {isValid = true; } db.closers (); db.closeSestm (); db.closeConn (); } return isValid; } // Enregistrer l'utilisateur public booléen add (nom d'utilisateur de chaîne, mot de passe de chaîne, courriel de chaîne) {boolean isvalid = false; Dbacess db = new dbacess (); if (db.createConN ()) {String sql = "Insérer dans p_user (id, nom d'utilisateur, mot de passe, e-mail) VALEURS ('" + generateuuid.next () + "', '" + username + "', '" + mot de passe + "', '" + email + "'); isvalid = db.update (sql); db.closonstm (); db.closeConn ();} Retour Isvalid;La logique métier ci-dessus Javabean définit des méthodes telles que la vérification de la connexion, la vérification d'enregistrement et les nouveaux utilisateurs
3.3 sur la génération d'un ID unique
Ce qui précède doit insérer un ID lors de l'ajout d'un nouvel utilisateur. Dans cet exemple, UUID est utilisé pour générer un ID unique.
Généreruuid.java
Package com.baosight.util; Importer java.util.date; / ** * <p> Titre: GenerateUUID </p> * <p> Description: TODO </p> * <p> Company: </p> * @author yuan * @date 2016-5-22 1:31:46 PM * / public class GenerateUuid {private static Date Date = new Date (); // private static stringBuilder buf = new StringBuilder (); Static privé int seq = 0; rotation intatique finale statique privée = 9999; public statique synchronisé long suivant () {if (seq> rotation) seq = 0; // buf.delete (0, buf.length ()); date.settime (System.CurrentTimemillis ()); String str = string.format ("% 1 $ ty% 1 $ tm% 1 $ td% 1 $ tk% 1 $ tm% 1 $ ts% 2 05D", date, seq ++); Retour Long.Parselong (STR); } public static void main (string [] args) {for (int i = 0; i <100; i ++) {System.out.println (next ()); }}} 4. Écriture de la page
4.1 Page de connexion
login.jsp
<% @ page langage = "java" import = "java.util. *" pageencoding = "utf-8"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <! Doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> <adread> <base href = "<% = baspath%>"> <title> page de connexion </ title> <méta http-equiv = "pragma" contenu = "no-cache"> <méta http-equiv = "cache-control" contenu = "no-cache"> <meta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <! type = "text / css" href = "Styles.css"> -> </ head> <body> <form action = "Login_action.jsp" Method = "Post"> </ tr> <tr> <td Colspan = "2"> Login Window </td> </ tr> <tr> <td> mot de passe: </td> <td> <input type = "text" name = "mot de passe" /> </td> </tr> <tr> <td colspan = "2"> <input type = "soumi" value = "login" /> <a href = "register.jsp"> enregistrer </a> </ad> </html>
Effet de page
4.2 Connectez-vous à la page de traitement de la logique métier
login_action.jsp
<% @ page Language = "Java" import = "java.util. *" Pageencoding = "utf-8"%> <% @ page import = "java.sql. *"%> <% @ page import = "com.baosight.bean. *"%> <% string path = demande.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <% String username = request.getParameter ("username"); String mot de passe = request.getParameter ("mot de passe"); if (username == null || "". equals (username.trim ()) || mot de passe == null || "". equals (mot de passe.trim ())) {//out.write("UserName ou mot de passe ne peut pas être vide! "); System.out.println ("Le nom d'utilisateur ou le mot de passe ne peut pas être vide!"); Response.SendRedirect ("Login.jsp"); retour; //request.getRequestDispatcher("Login.jsp").forward(request, réponse); } Userbean userbean = new Userbean (); booléan isvalid = userbean.valid (nom d'utilisateur, mot de passe); if (isValid) {System.out.println ("Connexion avec succès!"); session.setAttribute ("nom d'utilisateur", nom d'utilisateur); réponse.sendRedirect ("bienvenue.jsp"); retour; } else {System.out.println ("Le nom d'utilisateur ou le mot de passe est incorrect, la connexion a échoué!"); Response.SendRedirect ("Login.jsp"); retour; }%>Le JSP ci-dessus appelle Javabean pour le traitement des entreprises. Retournez à la page de connexion lorsque le nom d'utilisateur ou le mot de passe est vide.
Lorsque la connexion est réussie, enregistrez les informations de l'utilisateur à la session et passez à la page d'accueil Welcome.jsp
Retour à la page de connexion lorsque la connexion échoue à connexion.jsp
4.3 Connexion Page d'accueil avec succès
bienvenue.jsp
<% @ page langage = "java" import = "java.util. *" pageencoding = "utf-8"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'welcom.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv = "cache-control" contenu = "no-cache"> <meta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <! type = "text / css" href = "Styles.css"> -> </ head> <body> <s tablel> <tr> <tr> <td> <mg src = "images / logo4 /> </ td> </tr> <tr> <td> <pable> <tr> <td> <a> Main </a> </td> </tr> <tr> <td> <a> menu1 </a> </td> </tr> <tr> <td> <a> Menu2 </a> </td> </tr> <Tr> <Td> </tr> <tr> <td> <a> menu4 </a> </td> </tr> <tr> <td> <a> Menu5 </a> </td> </tr> <tr> <td> <a> Menu6 </a> </td> </tr> <tr> <td> <a> Menu7 </a> </td> </pr> <td> <a> menu7 </a> </td> </tr> <tr> <td> <a> menu8 </a> </td> </tr> </tr> </tr> </tr> </tr> </tr> </tr> </tr> </tr> <td> <form action = "Logginout.jsp" méthode = "post"> <Tr> <Tr> Colspan = "2"> Connectez-vous avec succès! </td> </tr> <tr> <td> Bienvenue, </td> <td> $ {username} </td> </tr> <tr> <td> bienvenue, </td> <tr> $ {username} </td> </tr> <td> COLSPAN = "2" ">" Douvère " value = "exit" /> </ td> </tr> </s table> </form> </td> </tr> </tr> </s table> </odody> </html>Effet de page
4.4 Déconnectez-vous de la page de traitement des affaires
liginout.jsp
<% @ page langage = "java" import = "java.util. *" pageencoding = "utf-8"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <! Doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> <adread> <base href = "<% = basepath%>"> <itle> mon jsp 'liginout.jsp' Page de départ </ title> <meta http-equiv = "Pragma" Contenu = "no-cache"> <meta http-equiv = "Pragma" Contenu = "NO-CAChe" http-equiv = "cache-control" contenu = "no-cache"> <meta http-equiv = "expires" contenu = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <! type = "text / css" href = "Styles.css"> -> </ head> <body> <% session.reMoveAttribute ("nom d'utilisateur"); Response.SendRedirect ("Login.jsp"); %> </ body> </html>Supprimer les informations de l'utilisateur de la session et sauter à la page de connexion Connexion.jsp
4.5 Page d'enregistrement des utilisateurs
registre.jsp
<% @ page langage = "java" import = "java.util. *" pageencoding = "utf-8"%> <% String path = request.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <! Doctype html public "- // w3c // dtd html 4.01 transitional // en"> <html> <a-head> <base href = "<% = basepath%>"> <itle> page de registre </ title> <meta http-equiv = "pragma" contenu = "no-cache"> <méta http-eashiv = "Cache-cache" not-cache "> <méta http-eashiv =" Cache-Contol "no-cache"> <méta http-eashiv = "Cache-Contol" NO-CACHE "> <Meta Http-Eaquiv =" Cache-Contol "NO-CACH content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "keywords" contenu = "keyword1, keyword2, keyword3"> <meta http-equiv = "description" contenu = "c'est ma page"> <! href = "Styles.css"> -> </ head> <body> <form action = "registre_action.jsp" metheth = "post"> <pally> <tr> <td Colspan = "2"> Registre fenêtre </td> </tr> <tr> <td> username: </ td> <td> <entrée = "text" name = "userame" /> <d> <tr> <tr> <tr> <tr> <tr> <Td> Mot de passe: </td> <td> <entrée Type = "Text" Name = "Password1" /> </td> </tr> <tr> <Td> Confirmer le mot de passe: </td> <td> <Type de Type = "Text" Name = "Passue2" /> </td> </tr> <Tr> <Td> Email: </td> <td> /> </ td> </ tr> <tr> <td Colspan = "2"> <input type = "soumi" value = "registre" /> <a href = "Loggin.jsp"> return </a> </ td> </ tr> </s table> </ form> </ body> </ html>
Effet de course
4.6 Page de traitement commercial d'enregistrement
<% @ page Language = "Java" import = "java.util. *" Pageencoding = "utf-8"%> <% @ page import = "java.sql. *"%> <% @ page import = "com.baosight.bean. *"%> <% string path = demande.getContextPath (); String basepath = request.getscheme () + ": //" + request.getServerName () + ":" + request.getServerport () + path + "/"; %> <% String username = request.getParameter ("username"); String Password1 = request.getParameter ("Password1"); String Password2 = request.getParameter ("Password2"); String Email = request.getParameter ("e-mail"); if (username == null || "". equals (username.trim ()) || mot de passe1 == null || "". equals (mot de passe1.trim ()) || mot de passe2 == null || ".". System.out.println ("Le nom d'utilisateur ou le mot de passe ne peut pas être vide!"); réponse.sendRedirect ("registre.jsp"); retour; //request.getRequestDispatcher("Login.jsp").forward(request, réponse); } Userbean userbean = new Userbean (); booléan isExit = userbean.isexist (nom d'utilisateur); if (! IsExit) {userbean.add (nom d'utilisateur, mot de passe1, e-mail); System.out.println ("Enregistré avec succès, veuillez vous connecter!"); Response.SendRedirect ("Login.jsp"); retour; } else {System.out.println ("Le nom d'utilisateur existe déjà!"); réponse.sendRedirect ("registre.jsp"); retour; }%>Le JSP ci-dessus appelle Javabean pour le traitement des affaires
Revenez à la page d'inscription lorsque le nom d'utilisateur ou le mot de passe est un registre vide.jsp
Lorsque le nom d'utilisateur enregistré n'existe pas dans la base de données, de nouveaux utilisateurs sont ajoutés
Une fois le nouvel ajout réussi, passez à la page de connexion Connexion.jsp
Lorsque le nom d'utilisateur enregistré existe dans la base de données, revenez à la page d'enregistrement Register.jsp
5. Résumé
Cet exemple utilise Javabean pour encapsuler les opérations de la base de données et le traitement de la logique métier.
Ce qui précède est une brève introduction à l'utilisation de JavaBean pour réaliser la connexion de l'utilisateur, et elle doit être améliorée en continu. J'espère que tout le monde pourra apprendre et faire des progrès ensemble!