Este artigo descreve brevemente o uso do Javabean para realizar o login de usuários, incluindo login, registro e logout de usuários.
1. Sobre Javabean
Javabean é um componente reutilizável escrito no idioma Java. Para ser escrito como Javabean, a classe deve ser específica e pública e possui um construtor sem parâmetros. Os Javabeans expõem domínios internos às propriedades dos membros, definem e obtêm métodos, fornecendo métodos públicos que estão em conformidade com o padrão de design consistente. Como todos sabemos, os nomes de atributos estão em conformidade com esse padrão, e outras classes de Java podem descobrir e manipular as propriedades desses javabeus por meio de mecanismos de introspecção.
2. Arquitetura do sistema
2.1 Diagrama de casos de uso de login
2.2 Fluxograma de página
2.3 Diagrama de arquitetura do sistema
2.4 Design de banco de dados
Este exemplo usa um banco de dados Oracle
A tabela de usuários inclui ID, nome de usuário, senha, email e um total de 4 campos.
- Criar tabela Criar tabela P_USER (ID VARCHAR2 (50) NÃO NULL, Nome de usuário VARCHAR2 (20), Senha Varchar2 (20), email VARCHAR2 (50)) Usuários do espaço de tabela PCTFREE 10 Initrans 1 Maxtrans 255 armazenamento (64 Minextents 1 MaxExtents Unwimited); - Adicione comentários ao comentário da tabela na tabela P_User é 'Tabela de usuários'; - Adicione comentários às colunas comentar na coluna p_user.id é 'id'; Comente na coluna p_user.username é 'nome de usuário'; Comente na coluna p_user.password é 'senha'; Comente na coluna p_user.email é 'email';
3. Escrita de Javabean
3.1 Desenvolvendo o processamento de banco de dados subjacente de Javabeans
Dbacess.java
pacote com.baosight.bean; importar java.sql.connection; importar java.SQL.DriverManager; importar java.sql.resultset; importar java.sql.sqLexception; importar java.sql.statement; /** Classe de operação do banco de dados * <p> Título: dbacess </p> * <p> Descrição: TODO </p> * <p> Empresa: </p> * @author yuan * @date 2016-5-22 12:40:24 */classe pública dbacess {private string driver = "oracle.jdbc.niver.orn.orn/public class {private string driver =" oracle.jdbc.niver.orn. private string url = "jdbc: oracle:" + "fino:@127.0.0.1: 1521: orcl"; String private String userName = "Scott"; private string senha = "tigre"; conexão privada Conn; Declaração Privada STM; Resultado privado RS; // Crie conexão public boolean createConn () {boolean b = false; tente {Class.ForName (Driver); // Carregar Driver Oracle Conn = DriverManager.getConnection (URL, nome de usuário, senha); b = true; } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } // Obtenha a conexão Catch (ClassNotFoundException e) {// TODO BLOCO DE CATAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } retornar b; } // Modifique a atualização pública booleana (string sql) {boolean b = false; tente {stm = conn.createstatement (); stm.execute (SQL); b = true; } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); } retornar b; } // Query public void Query (string sql) {try {stm = conn.createstatement (); rs = stm.executeQuery (SQL); } catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOMENTADO E.PRINTSTACKTRACE (); }} // julgue se existem dados públicos booleanos a seguir () {boolean b = false; tente {if (rs.Next ()) {b = true; }} Catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOGERATION E.PRINTSTACKTRACE (); } retornar b; } // obtenha o valor do campo Tabela public string getValue (campo de string) {string value = null; tente {if (rs! = null) {value = rs.getString (campo); }} Catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOGERATION E.PRINTSTACKTRACE (); } retornar valor; } // Fechar a conexão public void closeconn () {try {if (conn! = Null) {Conn.Close (); }} Catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOGERATION E.PRINTSTACKTRACE (); }} // fechar a instrução public void mais próximo () {try {if (stm! = Null) {stm.close (); }} Catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOGERATION E.PRINTSTACKTRACE (); }} // Fechar o resultado do resultado public void fechador () {try {if (rs! = Null) {rs.close (); }} Catch (sqLexception e) {// TODO BLOCO DE CAPAGEM AUTOGERATION E.PRINTSTACKTRACE (); }} public string getDriver () {return driver; } public void setDriver (driver da string) {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 = nome de usuário; } public string getPassword () {return senha; } public void setPassword (string senha) {this.password = senha; } declaração pública getstm () {return stm; } public void setStm (instrução stm) {this.stm = stm; } public ResultSet getrs () {return rs; } public void setRs (ResultSet rs) {this.rs = rs; } public void setConn (conexão conn) {this.conn = conn; } conexão pública getConn () {return Conn; }}A classe de operação do banco de dados acima usa o JDBC para se conectar ao banco de dados e encapsula métodos como conectar -se ao banco de dados, consultar, modificar e fechar recursos.
3.2 Desenvolver componentes de lógica de negócios Javabean
Userbean.java
pacote com.baosight.bean; importação com.baosight.util.geReReUuid; /** * <p> Título: UserBean </p> * <p> Descrição: TODO </p> * <p> Empresa: </p> * @author yuan * @date 2016-5-22 13:05:00 pm */public class UserBean {// Login Verificação public boolean (string username, string senha) {senha) Dbacess db = novo dbacess (); if (db.createConn ()) {string sql = "selecione * de p_user onde o nome de usuário = '"+nome de usuário+"' e senha = '"+senha+"'"; db.Query (SQL); if (db.Next ()) {isValid = true; } db.closers (); db.closestm (); db.closEconn (); } retornar isValid; } // Verificação de registro public boolean isExist (string userName) {boolean isValid = false; Dbacess db = novo dbacess (); if (db.createConn ()) {string sql = "selecione * de p_user onde o nome de usuário = '"+nome de usuário+"'"; db.Query (SQL); if (db.Next ()) {isValid = true; } db.closers (); db.closestm (); db.closEconn (); } retornar isValid; } // Registrar usuário public boolean add (string nome de usuário, senha da string, string email) {boolean isValid = false; Dbacess db = novo dbacess (); if (db.createConn ()) {string sql = "inserir em p_user (id, nome de usuário, senha, email) valores ('"+generateuuid.next ()+"', '"+username+"', '"+senha+",'"+email; db.closeConn ();A lógica de negócios acima define métodos como verificação de login, verificação de registro e novos usuários
3.3 Sobre gerar um ID único
O exposto acima precisa inserir um ID ao adicionar um novo usuário. Neste exemplo, o UUID é usado para gerar um ID exclusivo.
Generateuuid.java
pacote com.baosight.util; importar java.util.date; /** * <p> Título: generateuuid </p> * <p> Descrição: TODO </p> * <p> Empresa: </p> * @author yuan * @date 2016-5-22 13:31:46 PM */classe pública Generateuuid {Data de estática privada = nova data (); // private static stringbuilder buf = new stringbuilder (); estático privado int seq = 0; rotação final estática privada int = 9999; public static sincronizado Long Next () {if (seq> rotação) 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", data, seq ++); retornar long.parselong (str); } public static void main (string [] args) {for (int i = 0; i <100; i ++) {System.out.println (next ()); }}} 4. Redação de páginas
4.1 Página de login
login.jsp
<%@ página de página = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%string path = request.getContextPath (); String basalepath = request.getScheme ()+": //"+request.getServername ()+":"+request.getServerport ()+path+"/"; %> <! Doctype html public "-// w3c // dtd html 4.01 transitória // pt"> <html> <head> <base href = "<%= basepath%>"> <title> login página </title <meta http-ouquiv = "metagma" contention = " http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expire" content = "0"> <meta http-equiv = "palavras-chave" content = "keyword1, keyword2, palavra-chave"> <magle http-equiv = "descrição" "content1, keyword2, palavra-chave"> <magle http-ouquiv = "descrição" " type = "text/css" href = "styles.css"> -> </head> <body> <formulário = "login_action.jsp" method = "post"> <table> <tr> <td colspan = "2"> login window </td> </tr> <t> <td> username: </td> </td> </tr> <tr> <td> senha: </td> <td> <input type = "text" name = "senha"/> </td> </tr> <tr> <td colspan = "2"> <input type = "submit"/"login"/<a <a href = "> registring"> registring = "submit" = "Login"/<a <a href = "> registring"> registring "> registring =" submit "=" Login>/<a <a href = "> registring"> registring "> registring =" submit "=" Login>/<a <a <a href = "> registring"> registring = "submit" = "Login>/<a <a href ="> registring "> registring =" submit "=" login>/<a <a href = "> </body> </html>
Efeito de página
4.2 Faça login na página de processamento da lógica de negócios
login_action.jsp
<%@ Page Language = "java" import = "java.util. String basalepath = request.getScheme ()+": //"+request.getServername ()+":"+request.getServerport ()+path+"/"; %> <% String userName = request.getParameter ("nome de usuário"); String senha = request.getParameter ("senha"); if (nome de usuário == null || "". igual a (nome de usuário.trim ()) || senha == null || "". Equals (senha.trim ())) {//out.write("UserName ou senha não pode estar vazio! "); System.out.println ("Nome de usuário ou senha não pode estar vazio!"); Response.sendRedirect ("login.jsp"); retornar; //request.getRequestDispatcher("login.jsp").forward(request, resposta); } UserBean userBean = new UserBean (); boolean isValid = userBean.valid (nome de usuário, senha); if (isValid) {System.out.println ("Login com sucesso!"); session.setAttribute ("nome de usuário", nome de usuário); Response.SendRedirect ("Welcome.jsp"); retornar; } else {System.out.println ("nome de usuário ou senha desconhecidos, o login falhou!"); Response.sendRedirect ("login.jsp"); retornar; } %>O JSP acima chama Javabean para processamento de negócios. Retorne à página de login quando o nome de usuário ou a senha estiver vazio.
Quando o login for bem -sucedido, salve as informações do usuário na sessão e pule para a página de boas -vindas Welcome.jsp
Retorne à página de login quando o login falhar login.jsp
4.3 Login Página de boas -vindas com sucesso
Welcome.jsp
<%@ página de página = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%string path = request.getContextPath (); String basalepath = request.getScheme ()+": //"+request.getServername ()+":"+request.getServerport ()+path+"/"; %> <! Doctype html public "-// w3c // dtd html 4.01 transitório // pt"> <html> <head> <base href = "<%= Basepath%>"> <title> meu jsp 'welcom.jsp' página </title> <meta-http-aleat "> PRAG" PRAG (title welcom.jsp '" http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expire" content = "0"> <meta http-equiv = "palavras-chave" content = "keyword1, keyword2, palavra-chave"> <magle http-equiv = "descrição" "content1, keyword2, palavra-chave"> <magle http-ouquiv = "descrição" " type = "text/css" href = "styles.css"> -> </head> <body> <table> <tr> <tr> <td> <img src = "imagens/logo4.png"/> </td> <td> <mg src = "imagens/togo2.png"/> </td> </td> <mg> /> </td> </tr> <tr> <td> <table> <tr> <td> <a> main </a> </td> </tr> <tr> <td> <a> menu1 </a> </td> </tr> <tr> <td> <a> menu2 </a> </td> </trd> </tr> <tr> <Td> <a> </tr> <tr> <td> <a> menu4 </a> </td> </tr> <tr> <td> <a> menu5 </a> </td> </tr> <tr> <td> <a> menu6 </a> </td> </tr> <t> <t> <a> </a> </a> </td> </tr> <t> <t> <a> </a> </a> </a> </td> </tr> <t> <t> <a> </a> </a> <td> <a> menu7 </a> </td> </tr> <tr> <td> <a> menu8 </a> </td> </tr> </tr> </tr> </tr> </tr> </tr> </tr> </tr> </td> <form Action = "Loginout.JSPs" COLSPAN = "2"> Login com sucesso! value = "Exit"/> </td> </tr> </bit> </morm> </td> </tr> </tr> </table> </body> </html>
Efeito de página
4.4 Faça logo fora da página de processamento de negócios
loginout.jsp
<%@ página de página = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%string path = request.getContextPath (); String basalepath = request.getScheme ()+": //"+request.getServername ()+":"+request.getServerport ()+path+"/"; %> <! Doctype html public "-// w3c // dtd html 4.01 transitória // pt"> <html> <head> <base href = "<%= Basepath%>"> <title> meu jsp 'loginout.jsp' página </title> <meta http --temequiv "meu jsp 'loginout.jsp' ' http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expire" content = "0"> <meta http-equiv = "palavras-chave" content = "keyword1, keyword2, palavra-chave"> <magle http-equiv = "descrição" "content1, keyword2, palavra-chave"> <magle http-ouquiv = "descrição" " type = "text/css" href = "styles.css"> -> </head> <body> <% session.removeattribute ("nome de usuário"); Response.sendRedirect ("login.jsp"); %> </body> </html>Remova as informações do usuário da sessão e pule para a página de login login.jsp
4.5 Página de registro do usuário
Register.jsp
<%@ página de página = "java" import = "java.util.*" pageEncoding = "utf-8"%> <%string path = request.getContextPath (); String basalepath = request.getScheme ()+": //"+request.getServername ()+":"+request.getServerport ()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>Register Page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content = "sem cache"> <meta http-equiv = "expire" content = "0"> <meta http-equiv = "palavras-chave" content = "keyword1, palavra-chave2, palavra-chave3"> <meta http-equiv = "descrição" content = "this é minha página"> <! href = "styles.css"> -> </head> <body> <form action = "register_action.jsp" method = "post"> <table> <tr> <td colspan = "2"> registro janela </td> </tyt> "td> td) <r> <t> <t> <tame> username: </td> <td> <input> <td> senha: </td> <td> <input type = "text" name = "senha1"/> </td> </tr> <tr> <td> confirmar senha: </td> <td> <input type = "text" name = "senha2"/> </td> </tr> <tr> <t- "e -mail" " /> </td> </tr> <tr> <td colspan = "2"> <input type = "submit" value = "register"/> <a href = "login.jsp"> return </a> </td> </tr> </tabela
Efeito de corrida
4.6 Página de processamento de negócios de registro
<%@ Page Language = "java" import = "java.util. String basalepath = request.getScheme ()+": //"+request.getServername ()+":"+request.getServerport ()+path+"/"; %> <% String userName = request.getParameter ("nome de usuário"); String senha1 = request.getParameter ("senha1"); String senha2 = request.getParameter ("senha2"); String email = request.getParameter ("email"); if (nome de usuário == null || "". Equals (nome de usuário.trim ()) || senha1 == null || "". Equals (senha1.trim ()) || senha2 == null || ""). System.out.println ("Nome de usuário ou senha não pode estar vazio!"); Response.sendRedirect ("Register.jsp"); retornar; //request.getRequestDispatcher("login.jsp").forward(request, resposta); } UserBean userBean = new UserBean (); boolean isexit = userBean.sexist (nome de usuário); if (! isExit) {userBean.add (nome de usuário, senha1, email); System.out.println ("Registrado com sucesso, faça login!"); Response.sendRedirect ("login.jsp"); retornar; } else {System.out.println ("O nome de usuário já existe!"); Response.sendRedirect ("Register.jsp"); retornar; } %>O JSP acima chama Javabean para processamento de negócios
Retorne à página de registro quando o nome de usuário ou a senha estiver vazio registring.jsp
Quando o nome de usuário registrado não existe no banco de dados, novos usuários são adicionados
Depois que a nova adição é bem -sucedida, pule para a página de login login.jsp
Quando o nome de usuário registrado existir no banco de dados, retorne à página de registro Register.jsp
5. Resumo
Este exemplo usa o Javabean para encapsular operações de banco de dados e processamento de lógica de negócios.
O exposto acima é uma breve introdução ao uso do Javabean para realizar o login do usuário e precisa ser melhorado continuamente. Espero que todos possam aprender e progredir juntos!