이 기사에서는 사용자 로그인, 등록 및 로그 아웃을 포함하여 사용자 로그인을 실현하기 위해 Javabean의 사용에 대해 간략하게 설명합니다.
1. Javabean에 대해
Javabean은 Java 언어로 작성된 재사용 가능한 구성 요소입니다. Javabean으로 작성 되려면 클래스는 구체적이고 공개되어야하며 매개 변수가없는 생성자가 있어야합니다. Javabeans는 내부 도메인을 멤버 속성에 노출시키고 일관된 설계 패턴을 준수하는 공개 방법을 제공하여 메소드를 설정하고 가져옵니다. 우리 모두가 알고 있듯이, 속성 이름은이 패턴을 준수하고 다른 Java 클래스는 내성 메커니즘을 통해 이러한 Javabean의 속성을 발견하고 조작 할 수 있습니다.
2. 시스템 아키텍처
2.1 로그인 유스 케이스 다이어그램
2.2 페이지 흐름도
2.3 시스템 아키텍처 다이어그램
2.4 데이터베이스 설계
이 예제는 Oracle 데이터베이스를 사용합니다
사용자 테이블에는 ID, 사용자 이름, 비밀번호, 이메일 및 총 4 개의 필드가 포함됩니다.
- 테이블 생성 테이블 생성 테이블 p_user (id varchar2 (50) null, username varchar2 (20), 비밀번호 varchar2 (20), 이메일 varchar2 (50)) 테이블 스페이스 사용자 pctfree 10 initrans 1 maxtrans 255 스토리지 (초기 64 minextents 1 maxextents unmimited); - 테이블에 주석을 추가하여 표 p_user는 '사용자 테이블'입니다. - 열에 주석을 추가하십시오. 열 p_user.id는 'id'입니다. 열 p_user.username은 'username'입니다. 열 p_user.password 열에 대한 의견은 '비밀번호'입니다. 열 p_user.email에 대한 의견은 '이메일'입니다.
3. Javabean 글
3.1 Javabeans의 기본 데이터베이스 처리 개발
dbacess.java
패키지 com.baoSight.bean; java.sql.connection 가져 오기; Java.SQL.DriverManager 가져 오기; java.sql.resultset import; java.sql.sqlexception 가져 오기; java.sql.statement import; /** 데이터베이스 운영 클래스 * <p> 제목 : dbacess </p> * <p> 설명 : todo </p> * <p> 회사 : </p> * @author yuan * @date 2016-5-22 12:40:24 pm */public class dbacess {private string driver = "oracle.jdbc.driver.oracdriver"; 개인 문자열 URL = "JDBC : Oracle :" + "Thin :@127.0.0.1 : 1521 : orcl"; 개인 문자열 username = "Scott"; 개인 문자열 비밀번호 = "호랑이"; 비공개 연결 Conn; 개인 성명서 STM; 개인 결과 세트 Rs; // 연결 생성 public public boolean createConn () {boolean b = false; try {class.forname (driver); // Oracle 드라이버로드 conn = drivermanager.getConnection (url, username, password); b = 참; } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } // 연결 캐치 가져 오기 (classNotFoundException e) {// TODO 자동 생성 캐치 블록 E.PrintStackTrace (); } 반환 b; } // 공개 부울 업데이트 (String SQL) {boolean b = false; try {stm = conn.createstatement (); STM.Execute (SQL); b = 참; } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } 반환 b; } // query public void query (String SQL) {try {stm = conn.createstatement (); rs = stm.ExecuteQuery (SQL); } catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} // 데이터 공개 부울이 있는지 여부를 판단하십시오 () {boolean b = false; try {if (rs.next ()) {b = true; }} catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } 반환 b; } // 테이블 필드 값 가져 오기 공개 문자열 getValue (문자열 필드) {문자열 값 = null; try {if (rs! = null) {value = rs.getString (필드); }} catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); } 반환 값; } // 연결을 닫습니다 public void closeConn () {try {if (conn! = null) {conn.close (); }} catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} // close 명령문 public void closeStm () {try {if (stm! = null) {stm.close (); }} catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} // resouse resultSet public void Closers () {try {if (rs! = null) {rs.close (); }} catch (sqlexception e) {// todo 자동 생성 캐치 블록 e.printstacktrace (); }} public String getDriver () {반환 드라이버; } public void setDriver (문자열 드라이버) {this.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 password; } public void setpassword (문자열 비밀번호) {this.password = password; } 공개 성명서 getStm () {return stm; } public void setStm (stret stm) {this.stm = stm; } public resultset getrs () {return rs; } public void setrs (resultSet rs) {this.rs = rs; } public void setconn (Connection Conn) {this.conn = conn; } public Connection getConn () {return conn; }}위의 데이터베이스 운영 클래스는 JDBC를 사용하여 데이터베이스에 연결하고 데이터베이스에 연결, 쿼리, 수정 및 리소스를 닫는 것과 같은 메소드를 캡슐화합니다.
3.2 Javabean 비즈니스 로직 구성 요소를 개발하십시오
userBean.java
패키지 com.baoSight.bean; import com.baosight.util.generateuuid; /** * <p> 제목 : userBean </p> * <p> 설명 : TODO </p> * <p> 회사 : </p> * @Author Yuan * @date 2016-5-22 1:05:00 pm */public class userBean {// 공개 부울 유효한 (문자열 사용자 이름, 문자열 암호) {boolean isvalid = 거짓; dbacess db = new dbacess (); if (db.createConn ()) {String sql = "select * from p_user where username = '+username+"'및 password = ' "+password+"' "; DB.Query (SQL); if (db.next ()) {isvalid = true; } db.closers (); db.closestm (); db.closeconn (); } return isvalid; } // 등록 확인 public boolean isexist (String username) {boolean isvalid = false; dbacess db = new dbacess (); if (db.createConn ()) {String sql = "select *에서 username = '+username+"' "; DB.Query (SQL); if (db.next ()) {isvalid = true; } db.closers (); db.closestm (); db.closeconn (); } return isvalid; } // 사용자 공개 부울 추가 (문자열 사용자 이름, 문자열 암호, 문자열 이메일) {boolean isvalid = false; dbacess db = new dbacess (); if (db.createConn ()) {String SQL = "P_USER에 삽입 (id, username, password, email) 값 ( '"+generateUuid.next ()+"', '"+username+"', '"+password+",'+email+"); isvalid = db .update (sql); db.closeconn ()} isvalid};위의 비즈니스 로직 Javabean은 로그인 확인, 등록 확인 및 신규 사용자와 같은 방법을 정의합니다.
3.3 고유 한 ID를 생성하는 방법
위는 새 사용자를 추가 할 때 ID를 삽입해야합니다. 이 예에서 UUID는 고유 한 ID를 생성하는 데 사용됩니다.
GenerateUuid.java
패키지 com.baosight.util; import java.util.date; /** * <p> 제목 : GenerateUuid </p> * <p> 설명 : todo </p> * <p> 회사 : </p> * @author yuan * @date 2016-5-22 1:31:46 pm */public class generateuuid {private static date = new 날짜 (); // private static stringbuilder buf = new StringBuilder (); 개인 정적 int seq = 0; 개인 정적 최종 int 회전 = 9999; public static synchronized long next () {if (seq> rotation) seq = 0; // buf.delete (0, buf.length ()); 날짜 .settime (System.CurrentTimeMillis ()); String str = string.format ( "%1 $ ty%1 $ tm%1 $ td%1 $ tk%1 $ tm%1 $ ts%2 $ 05d", 날짜, seq ++); Return Long.parselong (str); } public static void main (String [] args) {for (int i = 0; i <100; i ++) {System.out.println (다음 ()); }}} 4. 페이지 쓰기
4.1 로그인 페이지
login.jsp
<%@ page language = "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 전환 // en"> <html> <head> <base href = "<%= basepath%>"> <title> 로그인 페이지 </title> <meta http-equiv = "pragma"> <meta "> http-equiv = "Cache-control"content = "no-cache"> <meta http-equiv = "chewors"content = "0"> <meta http-equiv = "keyword ="keyword1, keyword2, keyword2, keyword3 "> <meta http-equiv ="descript "> <" "rel rel rele"> type = "text/css"href = "styles.css"> -> -> </head> <body> <form action = "login_action.jsp"method = "post"> <table> <tr> <td colspan = "2"> 로그인 창 </td> </td> <td> username : <td> <td> </td> </tr> <tr> <td> 비밀번호 : </td> <td> <input type = "text"name "="password "/> </td> </tr> <td> <td colspan ="2 "> <입력 유형 ="value = "login"/> <a href = "register.jsp"> register </td> </td> </td> </td> </td> </td> </body> </html>
페이지 효과
4.2 비즈니스 로직 처리 페이지에 로그인하십시오
login_action.jsp
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%@ page import = "java.sql.*"%> <%@ page import = "com.baoSight.bean. String BasePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <% string username = request.getParameter ( "username"); 문자열 비밀번호 = request.getParameter ( "password"); if (username == null || "". System.out.println ( "사용자 이름 또는 비밀번호는 비어있을 수 없습니다!"); Response.SendRedirect ( "login.jsp"); 반품; //request.getRequestDispatcher("Login.jsp").forward(request, 응답); } userBean userBean = new userBean (); Boolean isvalid = userBean.Valid (사용자 이름, 비밀번호); if (isvalid) {system.out.println ( "성공적으로 로그인!"); session.setattribute ( "사용자 이름", 사용자 이름); Response.SendRedirect ( "Welcome.jsp"); 반품; } else {system.out.println ( "알 수없는 사용자 이름 또는 비밀번호, 로그인 실패!"); Response.SendRedirect ( "login.jsp"); 반품; } %>위의 JSP는 비즈니스 처리를 위해 Javabean을 호출합니다. 사용자 이름이나 비밀번호가 비어있을 때 로그인 페이지로 돌아갑니다.
로그인이 성공하면 사용자 정보를 세션에 저장하고 Welcome Page Welcome.jsp로 이동합니다.
로그인 페이지로 돌아 가면 로그인이 실패하면 로그인 .jsp
4.3 로그인을 성공적으로 환영합니다
환영합니다 .jsp
<%@ page language = "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 전환 // en"> <html> <head> <head> <base href = "<%= basepath%>"> <title> 나의 jsp 'welcom.jsp'시작 페이지 </title> <meta http-equiv = "pragma"= "no-cache"> http-equiv = "Cache-control"content = "no-cache"> <meta http-equiv = "chewors"content = "0"> <meta http-equiv = "keyword ="keyword1, keyword2, keyword2, keyword3 "> <meta http-equiv ="descript "> <" "rel rel rele"> type = "text/css"href = "styles.css"> -> -> </head> <table> <table> <tr> <tr> <img src = "images/logo4.png"/> </td> <td> <img src = "images/logo2.png"/> </td> <td colspan = "> /> </td> </tr> <td> <td> <table> <tr> <td> <a> main </a> </a> </td> </td> <tr> <td> <a> menu1 </a> </td> </tr> <td> <td> <a> menu2 </a> </td> <td> <td> <td> <td> <td> <td> </tr> <td> <td> <a> menu4 </a> </td> </tr> <td> <td> <a> menu5 </a> </td> </tr> <td> <a> menu6 </a> </td> </td> <t> <td> <a> 메뉴 7 </td> </td> </td> <td> <a> menu7 </a> </a> </td> </td> <tr> <td> <a> menu8 </a> </a> </td> </td> </td> </tr> </tr> </tr> </tr> </tr> </tr> </td> <td> <form action = "loginout.jsp"method = "table"> colspan = "2"> 로그인을 성공적으로 로그인! </td> </tr> <td> <td> 환영, </td> <td> $ {username} </td> </tr> <tr> <td> 환영, </td> <tr> $ {username} </td> </td> <td> <td> <td> <td> value = "exit"/> </td> </tr> </table> </form> </td> </tr> </tr> </table> </body> </html>페이지 효과
4.4 비즈니스 처리 페이지에서 로그 아웃하십시오
loginout.jsp
<%@ page language = "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 전환 // en"> <html> <head> <head> <base href = "<%= basepath%>"> <title> 나의 jsp 'loginout.jsp'시작 페이지 </title> <meta http-equiv = "pragma"> http-equiv = "Cache-control"content = "no-cache"> <meta http-equiv = "chewors"content = "0"> <meta http-equiv = "keyword ="keyword1, keyword2, keyword2, keyword3 "> <meta http-equiv ="descript "> <" "rel rel rele"> type = "text/css"href = "styles.css"> -> </head> <body> <% session.removeattribute ( "username"); Response.SendRedirect ( "login.jsp"); %> </body> </html>
세션에서 사용자 정보를 제거하고 로그인 페이지 로그인으로 이동합니다 .JSP
4.5 사용자 등록 페이지
register.jsp
<%@ page language = "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 전환 // en"> <html> <head> <base href = "<%= basepath%>"> <title> 레지스터 페이지 </title> <meta http-refiv = "pragma" "no-cache"> <cachiv = ""cache "> content = "no-cache"> <meta http-equiv = "만료"content = "0"> <meta http-equiv = "keywords"content = "keyword1, keyword2, keyword3"> <meta http-equiv = "description ="이것은 내 페이지입니다 ">-<link rel ="text/css " href = "styles.css"> -> </head> <body> <form action = "register_action.jsp"method = "post"> <table> <tr> <td colspan = "2"> 레지스터 창 </td> </tr> <tr> <td> username : </td> <td> <input type = "text"username "//td> <td> password : </td> <td> <입력 유형 = "text"name = "password1"/> </td> </td> <tr> <td> 비밀번호 확인 : </td> <td> <입력 유형 = "text"name = "password2"/> </td> </tr> <td> <td> email : <td> <td> <input type = "type" /> </td> </tr> <tr> <td colspan = "2"> <input type = "제출"value = "register"/> <a href = "login.jsp"> return </a> </td> </tr> </table> </form> </body> </html>
실행 효과
4.6 등록 비즈니스 처리 페이지
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%@ page import = "java.sql.*"%> <%@ page import = "com.baoSight.bean. String BasePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <% string username = request.getParameter ( "username"); 문자열 password1 = request.getParameter ( "password1"); 문자열 password2 = request.getParameter ( "password2"); 문자열 이메일 = request.getParameter ( "이메일"); if (username == null || "". System.out.println ( "사용자 이름 또는 비밀번호는 비어있을 수 없습니다!"); Response.SendRedirect ( "register.jsp"); 반품; //request.getRequestDispatcher("Login.jsp").forward(request, 응답); } userBean userBean = new userBean (); 부울 isexit = userBean.isexist (username); if (! isexit) {userBean.add (username, password1, email); System.out.println ( "성공적으로 등록, 로그인하십시오!"); Response.SendRedirect ( "login.jsp"); 반품; } else {system.out.println ( "사용자 이름이 이미 존재합니다!"); Response.SendRedirect ( "register.jsp"); 반품; } %>위의 JSP는 비즈니스 처리를 위해 Javabean을 호출합니다
사용자 이름이나 비밀번호가 빈 register.jsp 인 경우 등록 페이지로 돌아갑니다.
데이터베이스에 등록 된 사용자 이름이 존재하지 않으면 새 사용자가 추가됩니다.
새로운 추가가 성공하면 로그인 페이지 로그인으로 이동하십시오.
등록 된 사용자 이름이 데이터베이스에 존재하면 등록 페이지 register.jsp로 돌아갑니다.
5. 요약
이 예제는 Javabean을 사용하여 데이터베이스 운영 및 비즈니스 로직 처리를 캡슐화합니다.
위의 내용은 Javabean을 사용하여 사용자 로그인을 실현하는 것에 대한 간단한 소개이며 지속적으로 개선해야합니다. 모두가 함께 배우고 진전을 이룰 수 있기를 바랍니다!