zoukankan      html  css  js  c++  java
  • 软件设计中的单一职责原则

    一、关于登录模块的单一职责原则分析重构后的部分为: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();
                   
         }
    
    }

    截图:

  • 相关阅读:
    《POJ-2369》
    《1402
    《2018 Multi-University Training Contest 8》
    《HDU
    循环串
    模拟赛 数根 题解
    备份
    关于带删除线性基
    论OIer谈恋爱的必要性
    某计数题题解
  • 原文地址:https://www.cnblogs.com/Lizhichengweidashen/p/15292768.html
Copyright © 2011-2022 走看看