用java编写,运用数据访问层、业务逻辑层、UI层三层架构设计完成用户登录业务设计。给出代码
时间: 2024-03-06 17:51:54 浏览: 17
好的,以下是一个基于三层架构的用户登录业务的 Java 代码示例:
UserDao.java
```
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao {
private static final String URL = "jdbc:mysql://localhost:3306/mydb";
private static final String USER = "root";
private static final String PASSWORD = "password";
public User login(String username, String password) {
User user = null;
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
conn = DriverManager.getConnection(URL, USER, PASSWORD);
String sql = "SELECT * FROM user WHERE username = ? AND password = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (rs != null) {
rs.close();
}
if (pstmt != null) {
pstmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}
}
```
UserService.java
```
public class UserService {
private UserDao userDao = new UserDao();
public User login(String username, String password) {
User user = userDao.login(username, password);
if (user == null) {
System.out.println("Invalid username or password.");
}
return user;
}
}
```
LoginFrame.java
```
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class LoginFrame extends JFrame {
private JPanel contentPane;
private JTextField textFieldUsername;
private JTextField textFieldPassword;
private UserService userService = new UserService();
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
LoginFrame frame = new LoginFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public LoginFrame() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JLabel lblUsername = new JLabel("Username");
lblUsername.setBounds(63, 76, 86, 14);
contentPane.add(lblUsername);
JLabel lblPassword = new JLabel("Password");
lblPassword.setBounds(63, 119, 86, 14);
contentPane.add(lblPassword);
textFieldUsername = new JTextField();
textFieldUsername.setBounds(159, 73, 180, 20);
contentPane.add(textFieldUsername);
textFieldUsername.setColumns(10);
textFieldPassword = new JTextField();
textFieldPassword.setBounds(159, 116, 180, 20);
contentPane.add(textFieldPassword);
textFieldPassword.setColumns(10);
JButton btnLogin = new JButton("Login");
btnLogin.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String username = textFieldUsername.getText();
String password = textFieldPassword.getText();
User user = userService.login(username, password);
if (user != null) {
JOptionPane.showMessageDialog(LoginFrame.this, "Login success.");
}
}
});
btnLogin.setBounds(159, 167, 89, 23);
contentPane.add(btnLogin);
}
}
```
上面的代码示例中,User 表示用户实体类,包含 id、username 和 password 三个属性。UserDao 类实现了与用户相关的数据库操作,例如 login 方法用于验证用户登录信息。UserService 类实现了用户登录的业务逻辑,例如 login 方法用于处理用户登录逻辑。LoginFrame 类实现了用户登录界面,包含用户名和密码输入框、登录按钮等组件。当用户点击登录按钮时,会调用 UserService 类中的 login 方法来处理用户登录逻辑,并根据返回结果显示相应的信息。
注意,在实际开发中,我们还需要考虑异常处理、安全性、性能等方面的问题。上面的代码示例仅供参考。