1. 程式人生 > >簡單的web登入介面資料庫驗證 JSP+JavaBean

簡單的web登入介面資料庫驗證 JSP+JavaBean

          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元件,程式碼如下。
<%@ 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>
    在validate.jsp中定義了資料庫查詢操作的JavaBean,此處需要Java程式碼的實現,程式碼如下:
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語句是,兩個?最後都要賦值。

      此時,全部程式碼構建完成,執行,得到登入資訊結果。