MVC 編程思想實例 (基於java,jdbc操作mysql數據庫實現登陸註冊)

1.mvc 是一種使用MVC(Model View Controller 模型-視圖 -控制器)設計web程序的應用程序模式。MVC分層同時簡化了分組開發不同的開發人員可以同時開發視圖,控制器邏輯和業務邏輯。

Model 是應用程序中用於處理程序數據邏輯的部分,通產邏輯部分用於處理應用程序數據邏輯部分。 通常模型對象負責在數據庫中存儲對象。

  • View 是應用程序中處理數據顯示部分。通常視圖是依據模型數據創建的。
  • Controller 分層有助於管理應用程序,可以一時間內集中精力關注一個部分。

2.內容提要:

  1. java通過JDBC操作mysql操作數據庫,實現用戶的登陸和註冊功能。通過MVC編程的思想不同的登陸和註冊的功能進行封裝,使得程序的輸入,處理,和輸出分開。
  2. JDBC如何操作數據庫,請參見我的令一篇博文。java 使用 jdbc 操作mysql (快速瞭解)

3.操作結構

M:使用JDBC實現查找和添加的數據的一個類。其中查找和添加這兩個方法返回boolean類型的值。

V:給予M的一個視圖,通過判斷M中返回值來進行判斷登陸註冊的結果,並輸出結果。

C:通過接受用戶的輸入,實現人機交互。

4.結構實現

·M部分:

  1. 使用properties 文件抽取文件參數(用於儲存JDBC和mysql的連接信息)
  2. 將JDBC連接,編譯,關閉等操作封裝,用作工具類
  3. 創建一個實體類用於存貯數據庫中對應的參數(本文是用戶名和密碼)

·代碼實現

1.當前工作目錄下建立jdbc.properties文件,文件中添加如下內容:

driverClass=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/1_mydata
user=root
password=123456
注意:driverClass,url,user,password爲JDBC與mysql數據庫建立連接時使用的信息,請填寫自己配置信息


2.封裝工具類

package lesson15_jdbc;
import java.sql.*;
import java.util.ResourceBundle;

public class jdbc_FZ {
    //獲取連接
    public static Connection get_Connection(){
        //讀取properties中的數據
        ResourceBundle bundle=ResourceBundle.getBundle("jdbc");
        String driverClass=bundle.getString("driverClass");
        String url=bundle.getString("url");
        String user=bundle.getString("user");
        String password=bundle.getString("password");

        Connection conn=null;
        try{
            //加載驅動
            Class.forName(driverClass);
            //獲取鏈接
            conn= DriverManager.getConnection(url,user,password);
        }catch (ClassNotFoundException e){
            e.printStackTrace();
        }catch (SQLException e){
            e.printStackTrace();
        }
        return  conn;
    }

    //關閉所有資源
    public static void closeAll(PreparedStatement pst,ResultSet res,Connection coon){
        closeResultSet(res);
        closepst(pst);
        closeCoon(coon);
    }
    //關閉預編譯
    public static void closepst(PreparedStatement pst){
        try{
            pst.close();
        }catch (SQLException e){
            e.printStackTrace();
        }
    }
    //關閉結果集合
    public static void closeResultSet(ResultSet res){
        if (res!=null){
            try{
                res.close();
            }catch(SQLException e){
                e.printStackTrace();
            }
        }
    }
    //關閉連接
    public static void closeCoon(Connection coon){
        if(coon!=null){
            try{
                coon.close();
            }catch (SQLException e){
                e.printStackTrace();
            }

        }
    }
}

3. 實體類建立:

package lesson15_jdbc;
public class User {
    private String username;//用戶名
    private String password;//密碼

    public void setUsername(String name){
        this.username=name;
    }

    public String getUsername(){
        return this.username;
    }

    public void setPassword(String password){
        this.password=password;
    }
    public String getPassword(){
        return this.password;
    }


}
4. Model的建立

package lesson15_jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class jdbc_dengluzhuce {
    //插入
    public static boolean add(User user){
        Connection conn=jdbc_FZ.get_Connection();
        String sql="insert into user(username,password) value(?,?)";
        int count=0;
        try{
            PreparedStatement pst=conn.prepareStatement(sql);
            String username = user.getUsername();
            String password = user.getPassword();
            pst.setString(1,username);
            pst.setString(2, password);
            count = pst.executeUpdate();
            pst.close();
            conn.close();
        }catch (SQLException e){
            e.printStackTrace();
        }
        return count==1?true:false;
    }

    //查詢
    public static boolean login(User user){
        Connection conn=jdbc_FZ.get_Connection();
        String sql="select * from user where username=? and password=?";
        boolean flag=false;
        try{
            PreparedStatement pst=conn.prepareStatement(sql);
            String username =  user.getUsername();
            String password = user.getPassword();
            pst.setString(1,username);
            pst.setString(2, password);
            ResultSet res = pst.executeQuery();
            if (res!=null){
                flag=true;
            }
            jdbc_FZ.closeAll(pst,res,conn);
        }catch (SQLException e){
            e.printStackTrace();
        }
        return flag;
    }
}

·V部分

package lesson15_jdbc;

public class T {
    //登陸
    public boolean login(User user){
        return jdbc_dengluzhuce.add(user);
    }

    //註冊
    public boolean register(User user){
        return jdbc_dengluzhuce.login(user);
    }
}

·C部分

package lesson15_jdbc;

import java.util.Scanner;

public class test2 {
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in);
        User user =new User();
        System.out.println("***歡迎進入用戶登陸註冊系統***");
        System.out.println("請選擇需要的操作:1.註冊 2.登陸");
        int op=input.nextInt();
        switch (op){
            case 1:
                while(true){
                    System.out.println("請輸入用戶名:");
                    String username=input.next();
                    System.out.println("請輸入密碼:");
                    String password=input.next();
                    user.setUsername(username);
                    user.setPassword(password);
                    boolean result=T.register(user);
                    if (result){
                        System.out.println("註冊成功!");
                        break;
                    }else{
                        System.out.println("註冊失敗!");
                    }
                }
                break;
            case 2:
                while(true){
                    System.out.println("請輸入用戶名:");
                    String username=input.next();
                    System.out.println("請輸入密碼:");
                    String password=input.next();
                    user.setUsername(username);
                    user.setPassword(password);
                    boolean result=T.login(user);
                    if (result){
                        System.out.println("登陸成功!");
                        break;
                    }else{
                        System.out.println("登陸失敗!");
                    }
                }
                break;
        }

    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章