Java登陆界面的账户密码需要读取数据库,然后跳转到主页面
时间: 2024-03-15 07:45:10 浏览: 70
好的,如果登陆成功后需要跳转到主页面,可以在登陆成功的分支中实现页面跳转的逻辑。以下是一个简单的示例代码:
```java
import java.sql.*;
import java.awt.*;
import javax.swing.*;
public class Login extends JFrame {
private JTextField tfUsername;
private JPasswordField tfPassword;
public Login() {
super("登陆界面");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setLocationRelativeTo(null);
setLayout(new GridLayout(3, 2));
add(new JLabel("用户名:"));
tfUsername = new JTextField();
add(tfUsername);
add(new JLabel("密码:"));
tfPassword = new JPasswordField();
add(tfPassword);
JButton btnLogin = new JButton("登陆");
btnLogin.addActionListener(e -> {
String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false";
String user = "root";
String password = "123456";
String username = tfUsername.getText();
String pwd = new String(tfPassword.getPassword());
try {
Connection conn = DriverManager.getConnection(url, user, password);
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM user WHERE username=?");
stmt.setString(1, username);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
String dbPwd = rs.getString("password");
if (dbPwd.equals(pwd)) {
JOptionPane.showMessageDialog(null, "登陆成功!");
MainFrame frame = new MainFrame();
frame.setVisible(true);
dispose();
} else {
JOptionPane.showMessageDialog(null, "密码错误!");
}
} else {
JOptionPane.showMessageDialog(null, "用户名不存在!");
}
rs.close();
stmt.close();
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
});
add(new JLabel());
add(btnLogin);
}
public static void main(String[] args) {
Login frame = new Login();
frame.setVisible(true);
}
}
class MainFrame extends JFrame {
public MainFrame() {
super("主页面");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
setLocationRelativeTo(null);
setLayout(new BorderLayout());
add(new JLabel("欢迎来到主页面", SwingConstants.CENTER), BorderLayout.CENTER);
}
}
```
以上代码中,程序启动时显示登陆界面,用户输入用户名和密码,点击登陆按钮后,程序将用户名和密码与数据库中的数据进行比对,如果匹配成功,则弹出登陆成功的提示窗口,并跳转到主页面。主页面使用`JFrame`实现,包含一个居中的`JLabel`组件。当程序跳转到主页面时,登陆界面将被销毁,释放资源。
需要注意的是,为了避免SQL注入攻击,以上代码中使用`PreparedStatement`对象和占位符参数进行SQL查询。在登陆成功后,使用`JOptionPane`类弹出提示窗口,提示用户登陆成功。在主页面中,使用`BorderLayout`布局管理器将组件居中显示。
阅读全文