21xrx.com
2024-09-17 03:43:08 Tuesday
登录
文章检索 我的文章 写文章
Java编写用户登录程序:从入门到精通
2023-06-15 17:34:04 深夜i     --     --
Java 用户登录 程序设计

用户登录是现代软件应用中常见的功能,不论是网站还是手机应用,都需要一个可靠的登录验证机制。Java编写用户登录程序,可以通过图形用户界面(GUI)或命令行方式实现,本文将介绍如何用Java实现一个简单的用户登录程序。

1. 用户登录程序的基本原理

用户登录通常需要一个账户名和密码的组合验证,这些数据通常存储在一个数据库中。用户输入账户名和密码,程序根据输入的内容去数据库中验证是否合法,如果是,程序就会给用户正确的登录权限,否则程序会拒绝登录。

2. Java编写用户登录程序的具体实现

Java编写用户登录程序可以使用Java Swing(GUI)或命令行,本文将介绍如何用Java Swing实现一个简单的用户登录程序。程序代码需要一个数据库连接和一张用户表。

步骤:

a. 创建一个包含用户名和密码的用户表,以及一个用于数据库连接的类。

b. 创建一个Java Swing GUI界面,提供用户名和密码的输入框和一个“登录”按钮。

c. 将输入的用户名和密码传递给数据库类,执行MySQL查询,验证用户名和密码是否匹配。

d. 如果验证成功,则程序进入主界面,否则显示一个错误消息。

3. 本文的用户登录程序示例代码

程序代码示例:(请注意,以下代码应按照正确顺序输入)

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

public class Main {

  public static void main(String[] args) {

    // 创建登录界面

    LoginFrame frame = new LoginFrame();

    frame.setVisible(true);

  }

}

class LoginFrame extends JFrame {

  // 窗体的构造函数

  public LoginFrame() {

    setTitle("用户登录");

    setSize(350, 200);

    setLocationRelativeTo(null);

    setResizable(false);

    setLocationRelativeTo(null);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    initComponents();

  }

  private void initComponents() {

    // 定义和初始化窗体中的组件

    JPanel panel = new JPanel(new GridLayout(3, 2, 5, 5));

    panel.add(new JLabel("用户名:"));

    JTextField txtUser = new JTextField();

    panel.add(txtUser);

    panel.add(new JLabel("密码:"));

    JPasswordField txtPwd = new JPasswordField();

    panel.add(txtPwd);

    JButton btnOk = new JButton("登录");

    JButton btnCancel = new JButton("取消");

    panel.add(btnOk);

    panel.add(btnCancel);

    getContentPane().add(panel, BorderLayout.CENTER);

    getRootPane().setDefaultButton(btnOk);

    // 在监听器中处理用户登录事件

    btnOk.addActionListener(new ActionListener() {

      @Override

      public void actionPerformed(ActionEvent e) {

        String strUser = txtUser.getText().trim();

        char[] chrPwd = txtPwd.getPassword();

        String strPwd = new String(chrPwd).trim();

        if(strUser.isEmpty() || strPwd.isEmpty()) {

          JOptionPane.showMessageDialog(LoginFrame.this, "请输入用户名和密码");

          return;

        }

        try {

          // 验证用户登录信息

          DBCon dbc = new DBCon();

          dbc.query(strUser, strPwd);

        } catch (Exception ex) {

          JOptionPane.showMessageDialog(LoginFrame.this,

              "帐户名或密码不正确",

              "Error",

              JOptionPane.ERROR_MESSAGE);

          return;

        }

        // 进入主界面

        dispose();

        MainFrame mainFrame = new MainFrame();

        mainFrame.setVisible(true);

      }

    });

    // 取消事件,退出程序。

    btnCancel.addActionListener(new ActionListener() {

      @Override

      public void actionPerformed(ActionEvent e) {

        System.exit(0);

      }

    });

  }

}

class DBCon {

  // 定义数据库连接信息

  String strURL = "jdbc:mysql://localhost:3306/sysdb";

  String strUser = "admin";

  String strPwd = "admin";

  Connection conn = null;

  ResultSet rs = null;

  PreparedStatement stmt = null;

  public void query(String strUser, String strPwd) throws Exception {

    try {

      Class.forName("org.gjt.mm.mysql.Driver");

      conn = DriverManager.getConnection(strURL, strUser, strPwd);

      stmt = conn.prepareStatement("select * from tbl_user where cname=? and cpassword=?");

      stmt.setString(1, strUser);

      stmt.setString(2, strPwd);

      rs = stmt.executeQuery();

      if (!rs.next()) {

        throw new Exception("登录失败!");

      }

    } finally {

      try { rs.close(); } catch (Exception e) {}

      try { stmt.close(); } catch (Exception e) {}

      try { conn.close(); } catch (Exception e) {}

    }

  }

}

class MainFrame extends JFrame {

  public MainFrame() {

    setTitle("欢迎使用本系统");

    setSize(500, 400);

    setLocationRelativeTo(null);

    setResizable(false);

    setLocationRelativeTo(null);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    initComponents();

  }

  private void initComponents() {

    // 创建主界面中的组件

    JPanel panel = new JPanel();

    JLabel label = new JLabel("欢迎使用本系统!");

    panel.add(label);

    getContentPane().add(panel, BorderLayout.CENTER);

  }

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复