Xem thêm

Tạo form đăng nhập với Java Swing + MySql (Admin - User)

Huy Erick
Chào mừng bạn đến với bài viết hôm nay! Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo form đăng nhập với Java Swing và MySql cho vai trò Admin và User. Đồng...

Chào mừng bạn đến với bài viết hôm nay! Trong bài viết này, chúng ta sẽ tìm hiểu cách tạo form đăng nhập với Java Swing và MySql cho vai trò Admin và User. Đồng thời, chúng ta cũng sẽ hướng dẫn cách phân quyền khi đăng nhập.

Bước 1: Kết nối với cơ sở dữ liệu

Để kết nối với cơ sở dữ liệu MySql, chúng ta sẽ cần sử dụng công cụ hỗ trợ. Sau khi tạo project thành công, việc kết nối rất đơn giản.

Kết nối cơ sở dữ liệu

Bước 2: Kiểm tra kết nối giữa IDE và MySql

Đoạn code sau sẽ giúp bạn kiểm tra kết nối giữa IDE và MySql.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCConnection {
    public static Connection getJDBCConnection() throws SQLException {
        final String url = "jdbc:mysql://localhost:3306/testdb?autoReconnect=true&useSSL=false";
        final String user = "root";
        final String password = "123456";
        try {
            Class.forName("com.mysql.jdbc.Driver");
            return DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) throws SQLException {
        Connection connection = getJDBCConnection();
        if (connection != null) {
            System.out.println("Kết nối thành công");
        } else {
            System.out.println("Kết nối thất bại");
        }
    }
}

Bước 3: Thiết kế bảng dữ liệu trên MySql

Tiếp theo, chúng ta sẽ tạo một bảng User trong cơ sở dữ liệu testdb. Bảng User sẽ bao gồm các trường ID, FULLNAME, USERNAME, PASSWORD, và ROLE.

Bảng User

Bước 4: Xử lý Form đăng nhập

4.1. Tạo JFrame Login

Form đăng nhập

Chỉnh sửa các thông tin trong Form đăng nhập:

  • WellCome Member Login: Nhãn
  • Please enter your username and password: Nhãn
  • Username: Nhãn
  • Password: Nhãn
  • Select Role: Nhãn
  • Cancel + Sign In: Nút
  • File + Time UCT: Menu Bar
  • Logout: Menu Item
  • Nhập thông tin User: Text Field => Đổi tên biến thành jTextFieldUsername
  • Nhập thông tin Password: Password Field => Đổi tên biến thành jPasswordFieldPassword
  • Lựa chọn vai trò: Combo Box => Chọn - Admin - User

Bước 5: Xử lý sự kiện khi người dùng đăng nhập (Sign In)

Ở đây, chúng ta giả định rằng người dùng đã có tài khoản và sau khi điền thông tin đúng, chúng ta sẽ xử lý sự kiện khi người dùng nhấp vào ô Sign In.

Xử lý sự kiện đăng nhập

private void jButtonSignInActionPerformed(java.awt.event.ActionEvent evt) {
    String username = jTextFieldUsername.getText();
    String password = String.valueOf(jPasswordFieldPassword.getPassword());
    String option = jComboBox1.getSelectedItem().toString();

    if (username.equals("") || password.equals("") || option.equals("Select")) {
        JOptionPane.showConfirmDialog(rootPane, "Some Fields Are is Empty", "Error", 1);
    } else {
        PreparedStatement pst = null;
        Connection conn = null;

        try {
            conn = JDBCConnection.getJDBCConnection();
            String sql = "SELECT * FROM user WHERE USERNAME = ? AND PASSWORD = ?";
            pst = conn.prepareStatement(sql);
            pst.setString(1, username);
            pst.setString(2, password);
            ResultSet resultSet = pst.executeQuery();

            if (resultSet.next()) {
                String s1 = resultSet.getString("ROLE");

                if (option.equalsIgnoreCase("Admin") && s1.equalsIgnoreCase("Role_Admin")) {
                    JOptionPane.showMessageDialog(null, "Đăng nhập thành công");
                }

                if (option.equalsIgnoreCase("User") && s1.equalsIgnoreCase("Role_User")) {
                    JOptionPane.showMessageDialog(null, "Đăng nhập thành công");
                } else {
                    JOptionPane.showConfirmDialog(rootPane, "Tên người dùng hoặc mật khẩu không khớp", "Lỗi đăng nhập", 1);
                }
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        } finally {
            if (pst != null) {
                try {
                    pst.close();
                } catch (SQLException ex) {
                    Logger.getLogger(LoginJFrame.class.getName()).log(Level.SEVERE, null, ex);
                }
            }

            if (conn !=null) {
                try {
                    conn.close();
                } catch (SQLException ex) {
                    Logger.getLogger(LoginJFrame.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
    }
}

Bước 6: Xử lý sự kiện khi người dùng click vào "Cancel"

Khi người dùng nhấp vào Cancel, chúng ta sẽ đặt lại toàn bộ dữ liệu người dùng đã nhập:

Xử lý sự kiện Cancel

private void jButtonCancelActionPerformed(java.awt.event.ActionEvent evt) {
    jTextFieldUsername.setText("");
    jPasswordFieldPassword.setText("");
    jComboBox1.setSelectedItem("Select");
}

Bước 7: Xử lý sự kiện khi người dùng click vào "Logout"

Khi người dùng nhấp vào Logout, chúng ta sẽ tự động đăng xuất khỏi App.

Xử lý sự kiện Logout

private void jMenuItemLogoutActionPerformed(java.awt.event.ActionEvent evt) {
    System.exit(0);
}

Bước 8: Cài đặt ngày giờ cho App

public LoginJFrame() {
    initComponents();
    this.setLocationRelativeTo(null);
    showTime();
}

public void showTime() {
    Timer timer = new Timer(1000, new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            Date currentTimeDate = new Date();
            jMenuTime.setText(currentTimeDate.toString());
        }
    });

    timer.start();
}

Tổng kết

Sau các bước trên, chúng ta đã hoàn thành form đăng nhập cho các vai trò khác nhau. Đây chỉ là một phần rất nhỏ trong Case Study của chúng ta. Để tìm hiểu chi tiết hơn, bạn có thể tham khảo toàn bộ Case Study của mình tại đây.

Tác giả: Vũ Hoàng Tuấn

1