软件设计中的单一职责原则
一、关于登录模块的单一职责原则分析重构后的部分为:main()、LoginForm()、UserDao()、DBUtil()
二、过程如下:
1、新建项目Dynamic Web Project
2、导入jar包用于连接数据库
3、创建类
4、代码如下:
(1)DBUtil.java
package login; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class DBUtil { private static String mysqlname = "demo"; private static Connection con; private static String coursename = "com.mysql.cj.jdbc.Driver"; private static String url = "jdbc:mysql://localhost:3306/"+mysqlname+"?serverTimezone=UTC"; //注册驱动 public static Connection getConnection() { try { Class.forName(coursename); System.out.println("驱动加载成功"); }catch(ClassNotFoundException e) { e.printStackTrace(); } try { con = DriverManager.getConnection(url,"root","123asd..00"); System.out.println("连接成功"); }catch(Exception e){ e.printStackTrace(); con = null; } return con; } public static void close (Statement state, Connection conn) { if (state != null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void close (ResultSet rs, Statement state, Connection conn) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } } if (state != null) { try { state.close(); } catch (SQLException e) { e.printStackTrace(); } } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } public static void main(String[] args) { getConnection(); } }
2、UserDao.java
package login; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class UserDao { public boolean findUser(String username, String password) { //准备SQL语句 String sql = "select * from login where UserCount ='" + username + "'"; Connection conn= DBUtil.getConnection(); //创建语句传输对象 Statement state = null; ResultSet rs= null; int flag=0; String c_password=null; try { state = conn.createStatement(); rs = state.executeQuery(sql); while(rs.next()) { ++flag; c_password=rs.getString("password"); } if (flag == 0) { return false; } if (!password.equals(c_password)) { //判断密码 return false; } }catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { DBUtil.close(rs, state, conn); } return true; } public int register(String username, String password) { //准备SQL语句 String sql = "insert into login(UserCount,password) values(?,?)"; Connection conn= DBUtil.getConnection(); //创建语句传输对象 Statement state = null; ResultSet rs= null; int a=0; PreparedStatement psts=null; try { psts=conn.prepareStatement(sql); psts.setString(1, username); psts.setString(2, password); a=psts.executeUpdate(); psts.close(); conn.close(); }catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { DBUtil.close(rs, state, conn); } return a; } }
3、LoginForm.java
package login; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class UserDao { public boolean findUser(String username, String password) { //准备SQL语句 String sql = "select * from login where UserCount ='" + username + "'"; Connection conn= DBUtil.getConnection(); //创建语句传输对象 Statement state = null; ResultSet rs= null; int flag=0; String c_password=null; try { state = conn.createStatement(); rs = state.executeQuery(sql); while(rs.next()) { ++flag; c_password=rs.getString("password"); } if (flag == 0) { return false; } if (!password.equals(c_password)) { //判断密码 return false; } }catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { DBUtil.close(rs, state, conn); } return true; } public int register(String username, String password) { //准备SQL语句 String sql = "insert into login(UserCount,password) values(?,?)"; Connection conn= DBUtil.getConnection(); //创建语句传输对象 Statement state = null; ResultSet rs= null; int a=0; PreparedStatement psts=null; try { psts=conn.prepareStatement(sql); psts.setString(1, username); psts.setString(2, password); a=psts.executeUpdate(); psts.close(); conn.close(); }catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { DBUtil.close(rs, state, conn); } return a; } }
4、Main.java
package login; public class Main { public static void main(String[] args) { LoginForm loginForm=new LoginForm() ; //调用 loginForm.display(); } }
截图: