Este artículo describe brevemente el uso de Javabean para realizar el inicio de sesión del usuario, incluido el inicio de sesión del usuario, el registro y el inicio de sesión.
1. Acerca de Javabean
Javabean es un componente reutilizable escrito en el lenguaje Java. Para ser escrito como Javabean, la clase debe ser específica y pública, y tiene un constructor sin parámetros. Los Javabeans exponen los dominios internos a las propiedades de los miembros, establecen y obtienen métodos al proporcionar métodos públicos que se ajustan al patrón de diseño consistente. Como todos sabemos, los nombres de atributos se ajustan a este patrón, y otras clases de Java pueden descubrir y manipular las propiedades de estos Javabeans a través de mecanismos de introspección.
2. Arquitectura del sistema
2.1 Diagrama de casos de uso de inicio de sesión
Diario de flujo de 2.2 páginas
2.3 Diagrama de arquitectura del sistema
2.4 Diseño de base de datos
Este ejemplo usa una base de datos Oracle
La tabla de usuario incluye ID, nombre de usuario, contraseña, correo electrónico y un total de 4 campos.
- Crear tabla Crear tabla P_user (ID VARCHAR2 (50) No NULL, USERNAME VARCHAR2 (20), Password varChar2 (20), correo electrónico varchar2 (50)) usuarios de espacio de tabla PCTFree 10 initrans 1 maxtrans 255 almacenamiento (inicial 64 minerosxtents 1 maxextents Unlimited); - Agregar comentarios a la tabla Comentario en la tabla P_user es 'tabla de usuario'; - Agregar comentarios a las columnas Comentario en la columna P_user.id es 'id'; Comentario en la columna P_user.Username es 'Nombre de usuario'; Comentario en la columna P_user.password es 'contraseña'; Comentario en la columna P_user.email es 'correo electrónico';
3. Escritura de Javabean
3.1 Desarrollo del procesamiento de bases de datos subyacentes de Javabeans
Dbacess.java
paquete com.baosight.bean; import java.sql.connection; import java.sql.drivermanager; import java.sql.resultset; import java.sql.sqlexception; import java.sql.statement; /** Clase de operación de la base de datos * <p> Título: dbacess </p> * <p> Descripción: TODO </p> * <p> Company: </p> * @author yuan * @date 2016-5-22 12:40:24 pm */public class dbacess {private string control = "oracle.jdbc.driver.oracled";;;;;;;; String private url = "jdbc: oracle:" + "delgado:@127.0.0.1: 1521: orcl"; Nombre de usuario de cadena privada = "Scott"; String private Password = "Tiger"; Connectación privada Conns; Declaración privada STM; RS de resultado privado RS; // Crear conexión public boolean createConn () {boolean b = false; Pruebe {class.forname (controlador); // cargar oracle controlador conn = drivermanager.getConnection (url, nombre de usuario, contraseña); b = verdadero; } Catch (Sqlexception e) {// TODO BLOCK AUTO GENERADO E.PRINTSTACKTRACE (); } // Obtener la conexión de conexión (ClassNotFoundException e) {// TODO BLOCK GENERADO AUTO GENERADO E.PRINTSTACKTRACE (); } retorno b; } // modificar la actualización pública boolean (string sql) {boolean b = false; intente {stm = conn.createStatement (); stm.Execute (SQL); b = verdadero; } Catch (Sqlexception e) {// TODO BLOCK AUTO GENERADO E.PRINTSTACKTRACE (); } retorno b; } // consulta public void Query (string sql) {try {stm = conn.createStatement (); rs = stm.ExecuteQuery (SQL); } Catch (Sqlexception e) {// TODO BLOCK AUTO GENERADO E.PRINTSTACKTRACE (); }} // juzga si hay datos public boolean Next () {boolean b = false; intente {if (rs.next ()) {b = true; }} Catch (Sqlexception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } retorno b; } // Obtener el valor de campo de tabla public String getValue (campo de cadena) {string value = null; intente {if (rs! = null) {value = rs.getString (campo); }} Catch (Sqlexception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); } valor de retorno; } // Cierre la conexión public void CloseConn () {try {if (conn! = Null) {conn.close (); }} Catch (Sqlexception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }} // Cerrar declaración public void CloseStm () {try {if (stm! = Null) {stm.close (); }} Catch (Sqlexception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }} // cierre los cierres públicos de resultados void () {try {if (rs! = Null) {rs.close (); }} Catch (Sqlexception e) {// TODO Auto Generado Bloque E.PrintStackTrace (); }} public String getdriver () {return controlador; } public void setdriver (controlador de cadena) {this.driver = controlador; } public String getUrl () {return url; } public void seturl (url de cadena) {this.url = url; } public String getUsername () {return UserName; } public void setUsername (String UserName) {this.Username = username; } public String getPassword () {return Password; } public void setPassword (String Password) {this.password = contraseña; } declaración pública getstm () {return stm; } public void setstm (Declaración stm) {this.stm = stm; } public dulteStet getrs () {return rs; } public void setrs (resultset rs) {this.rs = rs; } public void setConn (Connection Conn) {this.conn = conn; } Conexión pública getConn () {return Conn; }}La clase de operación de la base de datos anterior utiliza JDBC para conectarse a la base de datos y encapsula métodos como conectarse a la base de datos, consultar, modificar y cerrar los recursos.
3.2 Desarrollar componentes lógicos comerciales de Javabean
Userbean.java
paquete com.baosight.bean; import com.baosight.util.generateUuid; /** * <p> Título: UserBean </p> * <p> Descripción: TODO </p> * <p> Company: </p> * @author yuan * @Date 2016-5-22 1:05:00 pm */public class UserBean {// Verificación de login Boolean Válido (String UserName, String Cauth) {boolean isvalid = falso; Dbacess db = new dBAcess (); if (db.createConn ()) {string sql = "select * de P_user donde username = '"+username+"' y contraseña = '"+contraseña+"'"; db.Query (SQL); if (db.next ()) {isValid = true; } db.closers (); db.Closestm (); db.Closeconn (); } return isValid; } // registrar verificación public boolean isExist (String UserName) {boolean isValid = false; Dbacess db = new dBAcess (); if (db.createConn ()) {string sql = "select * de P_user donde username = '"+username+"'"; db.Query (SQL); if (db.next ()) {isValid = true; } db.closers (); db.Closestm (); db.Closeconn (); } return isValid; } // Registre el usuario público boolean add (string username, string contraseña, correo electrónico de cadena) {boolean isValid = false; Dbacess db = new dBAcess (); if (db.createConn ()) {string sql = "inserte en p_user (id, nombre de usuario, contraseña, correo electrónico) valores ('"+generateuuid.next ()+"', '"+username+"', '"+contraseña+"', '"+correo electrónico+"'); isvalid = db.update (sql); db.clocleM (); db.Closeconn ();La lógica comercial anterior Javabean define métodos como la verificación de inicio de sesión, la verificación de registro y los nuevos usuarios
3.3 sobre la generación de una identificación única
Lo anterior necesita insertar una ID al agregar un nuevo usuario. En este ejemplo, UUID se usa para generar una identificación única.
Generaruuid.java
paquete com.baosight.util; import java.util.date; /** * <p> Título: GenerateUuid </p> * <p> Descripción: TODO </p> * <p> Company: </p> * @author yuan * @Date 2016-5-22 1:31:46 pm */public class Generateuid {fecha estática privada = nueva fecha (); // string stringbuilder privado buf = new StringBuilder (); static int seq = 0; ROTACIÓN INT FINAL STÁTICA PRIVADA = 9999; Public static sincronizado Long Next () {if (seq> rotación) 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", fecha, seq ++); regresar long.parselong (str); } public static void main (string [] args) {for (int i = 0; i <100; i ++) {system.out.println (next ()); }}} 4. Escritura de página
4.1 Página de inicio de sesión
Login.jsp
<%@ página lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%string path = requit.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+ruta+"/"; %> <! Doctype html público "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> página de inicio de sesión </title> <meta http-oquiv = "pragma" contenido = "no cache" http-equiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "palabras clave" content = "keyword1, weyword 2, keyword3"> <meta http-oquiv = "descripción" Content = "esto es mi página" << type = "text/css" href = "styles.css"> -> </head> <body> <form action = "login_action.jsp" método = "post"> <table> <tr> <td colspan = "2"> ventana de inyección de inyección </td> </tr> <tr> <td> usereNeM </td> </tr> <tr> <td> contraseña: </td> <td> <input type = "text" name = "contraseña"/> </td> </tr> <tr> <tr> <td colspan = "2"> <input type = "shit" value = "login"/> <a href = "registrado.jsp"> registrar </a> </aT> </tr> </tr> </truratorio </body> </html>
Efecto de página
4.2 Inicie sesión en la página de procesamiento de la lógica empresarial
Login_action.jsp
<%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%@ page import = "java.sql.*"%> <%@ page import = "com.baosight.bean.*"%> <%string = request.getContextPath (). String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+ruta+"/"; %> <% String username = request.getParameter ("Nombre de usuario"); Cadena contraseña = request.getParameter ("contraseña"); if (username == null || "". iguales (username.trim ()) || contraseña == null || "". iguales (contraseña.trim ())) {//out.write("username o no se puede poder estar vacío! "); System.out.println ("¡Nombre de usuario o contraseña no puede estar vacío!"); respuesta.sendedirect ("Login.jsp"); devolver; //request.getRequestDispatcher("login.jsp").Forward(Rrequest, respuesta); } UserBean userBean = new UserBean (); boolean isValid = userBean.Valid (nombre de usuario, contraseña); if (isValid) {System.out.println ("¡Iniciar sesión con éxito!"); session.SetAttribute ("Nombre de usuario", nombre de usuario); respuesta.sendedirect ("Bienvenido.jsp"); devolver; } else {system.out.println ("Nombre de usuario o contraseña desconocidos, inicio de sesión fallido!"); respuesta.sendedirect ("Login.jsp"); devolver; } %>El JSP anterior llama a Javabean para el procesamiento de negocios. Regrese a la página de inicio de sesión cuando el nombre de usuario o la contraseña esté vacía.
Cuando el inicio de sesión sea exitoso, guarde la información del usuario en la sesión y salte a la página de bienvenida bienvenida.jsp
Regresar a la página de inicio de sesión cuando el inicio de sesión falla login.jsp
4.3 Iniciar sesión con éxito la página de bienvenida
Bienvenido.jsp
<%@ página lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%string path = requit.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+ruta+"/"; %> <! Doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <Head> <base href = http-equiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "palabras clave" content = "keyword1, weyword 2, keyword3"> <meta http-oquiv = "descripción" Content = "esto es mi página" << type = "text/css" href = "styles.css"> -> </head> <body> <topla> <tr> <tr> <tr> <tr> <td> <img src = "imágenes/logo4.png"/> </td> /> </td> </tr> <tr> <td> <topla> <tr> <td> <a> main </a> </td> </tr> <tr> <td> <a> menú1 </a> </td> </tr> <tr> <tr> <td> <a> menú2 </a> </td> </tr> <tr> <tr> <t> <ail> </tr> <tr> <td> <a> menú4 </a> </td> </tr> <tr> <td> <a> menú5 </a> </td> </tr> <tr> <td> <a> menú6 </a> </td> </tr> <tr> <tr> <td> <a> menú7 </a> </td> </tr> <tr> <tr> <td> <a> menú7 </a> </td> </tr> <tr> <td> <a> menú8 </a> </td> </tr> </tr> </tr> </tr> </tr> </tr> </tr> <tr> </tr> <tr> <td> <formul colspan = "2"> ¡Iniciar sesión con éxito! </td> </tr> <tr> <td> Bienvenido, </td> <td> $ {username} </td> </tr> <tr> <td> bienvenido, </td> <tr> $ {usernerName} </td> </tr> <<t> colspan = "2"> <inping type = " value = "EXIT"/> </td> </tr> </table> </form> </td> </tr> </tr> </table> </body> </html>Efecto de página
4.4 Iniciar sesión en la página de procesamiento de negocios
loginout.jsp
<%@ página lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%string path = requit.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+ruta+"/"; %> < http-equiv = "cache-confontrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "palabras clave" content = "keyword1, weyword 2, keyword3"> <meta http-oquiv = "descripción" Content = "esto es mi página" << type = "text/css" href = "styles.css"> -> </head> <body> <% session.removeattribute ("nombre de usuario"); respuesta.sendedirect ("Login.jsp"); %> </body> </html>Eliminar la información del usuario de la sesión y saltar a la página de inicio de sesión de inicio de sesión.jsp
4.5 Página de registro de usuarios
registrar.jsp
<%@ página lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%string path = requit.getContextPath (); String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+ruta+"/"; %> <! DocType html público "-// w3c // dtd html 4.01 transitional // en"> <html> <fead> <base href = "<%= basepath%>"> <title> registro de la página </title> <meta http-equiv = "pragma" contenido = "no cache" "meta httpp-cyt =" cheates cheatt "cheate cytrol" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "palabras clave" content = "Keyword1, Keyword2, Keyword3"> <meta http-equiv = "Descripción" Content = "Esta es mi página"> <!-<Link Rel = "Stylesheet" Type = "Text/csss" href = "styles.css"> -> </head> <body> <form de acción = "registro_action.jsp" método = "post"> <table> <tr> <td colspan = "2"> registrar ventana </td> </tr> <TD> contraseña: </td> <td> <input type = "text" name = "contraseña1"/> </td> </tr> <tr> <td> confirmar contraseña: </td> <td> <input type = "text" name = "contraseña2"/> </td> </tr> <tr> <td> correo electrónico: </td> <td> <td type de entrada = "text" name " /> </td> </tr> <tr> <td colspan = "2"> <input type = "subt" value = "registro"/> <a href = "login.jsp"> return </a> </td> </tr> </table> </form> </body> </html>
Efecto de ejecución
4.6 Página de procesamiento comercial de registro
<%@ page lenguaje = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%@ page import = "java.sql.*"%> <%@ page import = "com.baosight.bean.*"%> <%string = request.getContextPath (). String basepath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+ruta+"/"; %> <% String username = request.getParameter ("Nombre de usuario"); Cadena contraseña1 = request.getParameter ("contraseña1"); Cadena contraseña2 = request.getParameter ("contraseña2"); String Correo electrónico = request.getParameter ("correo electrónico"); if (username == null || "". iguales (username.trim ()) || contraseña1 == null || "". iguales (contraseña1.trim ()) || contraseña2 == null || "". iguales (contraseña 2.trim ()) || System.out.println ("¡Nombre de usuario o contraseña no puede estar vacío!"); respuesta.sendedirect ("registrar.jsp"); devolver; //request.getRequestDispatcher("login.jsp").Forward(Rrequest, respuesta); } UserBean userBean = new UserBean (); boolean isExit = userBean.isexist (nombre de usuario); if (! isexit) {userBean.add (nombre de usuario, contraseña1, correo electrónico); System.out.println ("Registrado correctamente, ¡inicie sesión!"); respuesta.sendedirect ("Login.jsp"); devolver; } else {System.out.println ("¡El nombre de usuario ya existe!"); respuesta.sendedirect ("registrar.jsp"); devolver; } %>El anterior JSP llama a Javabean para el procesamiento de negocios
Regrese a la página de registro cuando el nombre de usuario o la contraseña esté vacío registre.jsp
Cuando el nombre de usuario registrado no existe en la base de datos, se agregan nuevos usuarios
Después de que la nueva incorporación sea exitosa, salte a la página de inicio de sesión, login.jsp
Cuando el nombre de usuario registrado existe en la base de datos, regrese a la página de registro registrar.jsp
5. Resumen
Este ejemplo utiliza Javabean para encapsular las operaciones de la base de datos y el procesamiento de la lógica de negocios.
Lo anterior es una breve introducción al uso de Javabean para realizar el inicio de sesión del usuario, y debe mejorarse continuamente. ¡Espero que todos puedan aprender y progresar juntos!