Mountains

Phần 08: Hướng dẫn chức năng đăng nhập ứng dụng

Tổng số bài

10 bài

Tổng số bài

Thời gian học

4 giờ

Thời gian học

Kỹ năng

Cơ bản

Kỹ năng

Nguồn

teamvietdev.com

Nguồn

Xem video


Lượt xem: 777 lượt xem


Bước 1: Đầu tiên chúng ta tạo lớp TaiKhoan.java chứa thông tin đăng nhập như tên đăng nhập, mật khẩu.

package com.teamvietdev.model;

public class TaiKhoan {

    private int ma_tai_khoan;
    private String ten_dang_nhap;
    private String mat_khau;
    private boolean tinh_trang;

    public int getMa_tai_khoan() {
        return ma_tai_khoan;
    }

    public void setMa_tai_khoan(int ma_tai_khoan) {
        this.ma_tai_khoan = ma_tai_khoan;
    }

    public String getTen_dang_nhap() {
        return ten_dang_nhap;
    }

    public void setTen_dang_nhap(String ten_dang_nhap) {
        this.ten_dang_nhap = ten_dang_nhap;
    }

    public String getMat_khau() {
        return mat_khau;
    }

    public void setMat_khau(String mat_khau) {
        this.mat_khau = mat_khau;
    }

    public boolean isTinh_trang() {
        return tinh_trang;
    }

    public void setTinh_trang(boolean tinh_trang) {
        this.tinh_trang = tinh_trang;
    }

}

Tạo bảng tai_khoan trong cơ sở dữ liệu:

-- ----------------------------
-- Table structure for tai_khoan
-- ----------------------------
DROP TABLE IF EXISTS `tai_khoan`;
CREATE TABLE `tai_khoan` (
  `ma_tai_khoan` int(11) NOT NULL AUTO_INCREMENT,
  `ten_dang_nhap` varchar(255) DEFAULT NULL,
  `mat_khau` varchar(255) DEFAULT NULL,
  `tinh_trang` bit(1) DEFAULT NULL,
  PRIMARY KEY (`ma_tai_khoan`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

Bước 2: Tạo lớp xử lý kiểm tra tài khoản đăng nhập trong cơ sở dữ liệu

Lớp TaiKhoanDAO.java

package com.teamvietdev.dao;

import com.teamvietdev.model.TaiKhoan;

public interface TaiKhoanDAO {
    
    public TaiKhoan login(String tenDangNhap, String matKhau);
    
}

Lớp TaiKhoanDAOImpl.java

package com.teamvietdev.dao;

import com.teamvietdev.model.TaiKhoan;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class TaiKhoanDAOImpl implements TaiKhoanDAO {

    @Override
    public TaiKhoan login(String tenDangNhap, String matKhau) {
        Connection cons = DBConnect.getConnection();
        String sql = "SELECT * FROM tai_khoan WHERE ten_dang_nhap LIKE ?  AND mat_khau LIKE ?";
        TaiKhoan taiKhoan = null;
        try {
            PreparedStatement ps = (PreparedStatement) cons.prepareStatement(sql);
            ps.setString(1, tenDangNhap);
            ps.setString(2, matKhau);
            ResultSet rs = ps.executeQuery();
            if (rs.next()) {
                taiKhoan = new TaiKhoan();
                taiKhoan.setMa_tai_khoan(rs.getInt("ma_tai_khoan"));
                taiKhoan.setTen_dang_nhap(rs.getString("ten_dang_nhap"));
                taiKhoan.setMat_khau(rs.getString("mat_khau"));
                taiKhoan.setTinh_trang(rs.getBoolean("tinh_trang"));
            }
            ps.close();
            cons.close();
            return taiKhoan;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}

Lớp TaiKhoanService.java

package com.teamvietdev.service;

import com.teamvietdev.model.TaiKhoan;

public interface TaiKhoanService {
    
    public TaiKhoan login(String tenDangNhap, String matKhau);
    
}

Lớp TaiKhoanServiceImpl.java

package com.teamvietdev.service;

import com.teamvietdev.dao.TaiKhoanDAO;
import com.teamvietdev.dao.TaiKhoanDAOImpl;
import com.teamvietdev.model.TaiKhoan;

public class TaiKhoanServiceImpl implements TaiKhoanService {

    private TaiKhoanDAO taiKhoanDAO = null;

    public TaiKhoanServiceImpl() {
        taiKhoanDAO = new TaiKhoanDAOImpl();
    }

    @Override
    public TaiKhoan login(String tenDangNhap, String matKhau) {
        return taiKhoanDAO.login(tenDangNhap, matKhau);
    }

}

 

Bước 3: Bạn có thể khởi tạo Dialog mới và đặt tên là DangNhapDialog.java, sau đó thiết kế giao diện trang đăng nhập một 2 TextField để nhập tên đăng nhập và mật khẩu, một Button để người dùng đăng nhập và một Label giúp hiển thị thông báo trong trường hợp nhập sai tên đăng nhập hoặc mật khẩu.

 

Lập trình Java Swing với ứng dụng quản lý học viên

 

Kết quả sau khi thiết kế mẫu giao diện đăng nhập như sau:

 

Lập trình Java Swing với ứng dụng quản lý học viên

 

Tạo DangNhapController.java xử lý đăng nhập

package com.teamvietdev.controller;

import com.teamvietdev.model.TaiKhoan;
import com.teamvietdev.service.TaiKhoanService;
import com.teamvietdev.service.TaiKhoanServiceImpl;
import com.teamvietdev.view.ManHinhChinhJFrame;
import java.awt.Color;
import java.awt.Dialog;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class DangNhapController {

    private Dialog dialog;
    private JButton btnSubmit;
    private JTextField jtfTenDangNhap;
    private JTextField jtfMatKhau;
    private JLabel jlbMsg;

    private TaiKhoanService taiKhoanService = null;

    public DangNhapController(Dialog dialog, JButton btnSubmit,
            JTextField jtfTenDangNhap, JTextField jtfMatKhau, JLabel jlbMsg) {
        this.dialog = dialog;
        this.btnSubmit = btnSubmit;
        this.jtfTenDangNhap = jtfTenDangNhap;
        this.jtfMatKhau = jtfMatKhau;
        this.jlbMsg = jlbMsg;

        taiKhoanService = new TaiKhoanServiceImpl();
    }

    public void setEvent() {
        btnSubmit.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                try {
                    if (jtfTenDangNhap.getText().length() == 0
                            || jtfMatKhau.getText().length() == 0) {
                        jlbMsg.setText("Vui lòng nhập dữ liệu bắt buộc!");
                    } else {
                        TaiKhoan taiKhoan = taiKhoanService.login(jtfTenDangNhap.getText(), jtfMatKhau.getText());
                        if (taiKhoan == null) {
                            jlbMsg.setText("Tên đăng nhập và mật khẩu không đúng!");
                        } else {
                            if (!taiKhoan.isTinh_trang()) {
                                jlbMsg.setText("Tài khoản của bạn đang bị tạm khóa!");
                            } else {
                                dialog.dispose();
                                MainJFrame frame = new MainJFrame();
                                frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
                                frame.setVisible(true);
                            }
                        }
                    }
                } catch (Exception ex) {
                    jlbMsg.setText(ex.toString());
                }
            }

            @Override
            public void mouseEntered(MouseEvent e) {
                btnSubmit.setBackground(new Color(0, 200, 83));
            }

            @Override
            public void mouseExited(MouseEvent e) {
                btnSubmit.setBackground(new Color(100, 221, 23));
            }
        });

    }

}

Trong DangNhapDialog.java bạn gọi đến DangNhapController.java

DangNhapController controller = new DangNhapController(this, btnSubmit, 
                jtfTenDangNhap, jtfMatKhau, jlbMsg);
controller.setEvent();

Bình luận bài học

Đăng bình luận

0 bình luận


Bạn có muốn xác nhận hoàn thành bài học này không?


Xác nhận hoàn thành bài học