软件设计中的单一职责原则

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

}

 

 

截图:

 

posted on 2021-09-16 11:26  桑榆非晚柠月如风  阅读(42)  评论(0编辑  收藏  举报