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;
        }

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值