簡單的web登入介面資料庫驗證 JSP+JavaBean
阿新 • • 發佈:2019-02-13
web登入介面資料庫驗證是web開發最簡單也是最基礎的一個開發環節。本次開發模式為JSP(前端)+JavaBean(資料庫驗證)+Java(資料庫連線)。程式碼工程目錄如下:
首先,JSP設計登入介面,簡單起見,只有name和password兩個文字輸入框和submit提交按鈕。所有的元素封存在<form >標籤中。程式碼如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>login</title> </head> <body> <jsp:useBean id="date" class="java.util.Date"></jsp:useBean> <p>日期為:<%= date %> <h1>Welcome</h1> <form action="valadite.jsp" name="login"> 使用者名稱:<label> <input type="text" name="name" > </label><br> 密 碼:<label> <input type="password" name="password"> </label><br> <%--<button type="button">註冊</button>--%> <input type="submit"> </form> </body> </html>
其次,設計MySQL資料庫表單,資料庫名稱為:future-login-message,表單名稱為login,結構如下:
接著,用Java連線資料庫。此處要注意兩點:1、getCon方法的返回值型別為Connection。2、最好將連線方法getCon寫成成員方法,方便後續呼叫。程式碼如下:
package connect; import java.sql.*; public class mysqlConnect { public Connection getCon() { //定義型別為Connection的getCon()方法 Connection con = null; String username = "root"; String password = "lcglcg"; String Driver = "com.mysql.jdbc.Driver"; String url = "jdbc:mysql://localhost:3306/future-login-message"; try { Class.forName(Driver); System.out.println("驅動載入成功!"); } catch (ClassNotFoundException e) { e.printStackTrace(); } try { con = DriverManager.getConnection(url, username, password); System.out.println("連線成功!"); } catch (SQLException e) { e.printStackTrace(); } return con; //返回值為Connection con } }
定義validate.jsp頁面,設定在login.jsp點選登入按鈕是的頁面跳轉頁資料庫查詢驗證。此處用到JavaBean元件,程式碼如下。
在validate.jsp中定義了資料庫查詢操作的JavaBean,此處需要Java程式碼的實現,程式碼如下:<%@ page import="java.sql.Connection" %> <%@ page import="java.sql.Statement" %> <%@ page import="java.sql.SQLException" %> <%@ page import="java.sql.ResultSet" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title></title> </head> <body> <%--申明bean物件,將JavaBean變為指令碼變數,可以通過指令碼元素來訪問其元素,將JavaBean例項化:ID--%> <jsp:useBean id="user" class="Bean.loginMeaasge"></jsp:useBean> <%--設定寫入屬性,將JavaBean中的name和password設定為當前頁面的輸入值--%> <jsp:setProperty name="user" property="*"></jsp:setProperty> <%--申明JavaBean物件,傳入name和password物件,進行資料驗證--%> <jsp:useBean id="test" class="MessageTest.Test"></jsp:useBean> <% if(test.valiuser(user)) out.print("successful"); else out.print("fail"); %> </body> </html>
package MessageTest;
import java.sql.*;
import Bean.loginMeaasge;
import connect.mysqlConnect;
public class Test {
private Connection con;
private PreparedStatement pst;
public Test() { //定義Test的建構函式,例項化getCon方法,連線到資料庫(Test物件的例項化在valadite.jsp的JSP:useBean完成)
con = new mysqlConnect().getCon();//申明的connection物件con=mysqlConnect()物件的getcon方法
//new getcon()方法,將其例項化。 本段程式碼,一個物件等於另一個物件的成員方法?什麼操作?
}
public boolean valiuser(loginMeaasge user) { //例項化一個JavaBean物件:loginMeaasge user,用來執行JavaBean操作
try {
pst = con.prepareStatement("select * from `future-login-message`.login where name=? and password=?");
pst.setString(1, user.getName()); //接收username值
pst.setString(2, user.getPassword());
ResultSet rs = pst.executeQuery();
return rs.next();
} catch (SQLException e) {
e.printStackTrace();
return false;// try 和catch兩個模組都要分別定義返回值
}
}
}
本段程式碼需要特別注意兩個點;1、在構造方法Test()中,申明的con物件=new mysqlConnection.getcon()方法,即一個物件等於另一個物件的成員方法,此處,con的屬性為Connection,而getcon()方法的型別也為Connection.2、定義成員方法boolean valiuser(loginMeaasge user)中,引數user型別為loginMeaasge,即此處的user是一個JavaBean3、使用prepareStatement()執行查詢SQL語句是,兩個?最後都要賦值。
此時,全部程式碼構建完成,執行,得到登入資訊結果。