1.mvc 是一种使用MVC(Model View Controller 模型-视图 -控制器)设计web程序的应用程序模式。MVC分层同时简化了分组开发不同的开发人员可以同时开发视图,控制器逻辑和业务逻辑。
2.内容提要:Model 是应用程序中用于处理程序数据逻辑的部分,通产逻辑部分用于处理应用程序数据逻辑部分。 通常模型对象负责在数据库中存储对象。
- View 是应用程序中处理数据显示部分。通常视图是依据模型数据创建的。
- Controller 分层有助于管理应用程序,可以一时间内集中精力关注一个部分。
- java通过JDBC操作mysql操作数据库,实现用户的登陆和注册功能。通过MVC编程的思想不同的登陆和注册的功能进行封装,使得程序的输入,处理,和输出分开。
- JDBC如何操作数据库,请参见我的令一篇博文。java 使用 jdbc 操作mysql (快速了解)
3.操作结构
M:使用JDBC实现查找和添加的数据的一个类。其中查找和添加这两个方法返回boolean类型的值。
V:给予M的一个视图,通过判断M中返回值来进行判断登陆注册的结果,并输出结果。
C:通过接受用户的输入,实现人机交互。
4.结构实现
·M部分:
- 使用properties 文件抽取文件参数(用于储存JDBC和mysql的连接信息)
- 将JDBC连接,编译,关闭等操作封装,用作工具类
- 创建一个实体类用于存贮数据库中对应的参数(本文是用户名和密码)
·代码实现
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; } } }