#题目要求#
在Java用使用GUI面板进行用户登录操作,其中用户登录所需的账号密码存储在数据库中,要根据输入的账号密码是否正确来判断是否登录成功,并提出弹窗提示,然后再进行跳转到操作页面......
#思路,步骤#
1.首先需要再数据库中创建库和所需表
2.确定表中所需的主键和外键(本题需要的仅为主键,外键要求在后续体现)
3.在java中创建entry,dao,service,(util),view包并创建相应类
4.细节步骤在具体代码部分体现
#代码实现#
1.数据库,表的创建
第一部分需要用到的只有user表,但在实际操作中建议大家在进行实践前列出所有表然后找到对应关系再操作。这一部分就不进行细致化讲解了,我是在Navicat中直接创建的(很方便)。
2.util—operate方法类
向本体各部分具体操作提供了数据库和java的连接
private static final String URL = "jdbc:mysql://localhost:3306/8_13_project(创建表的库名,自己定义)?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai(让数据库同步时间的操作直接复制粘贴就好)";
private static final String CLASSNAME = "com.mysql.cj.jdbc.Driver";(事先导入的jar包下的Driver,该题全部操作的前提是该包)
private static final String USER = "root";
private static final String PASSWORD = "******";(创建数据库时自己设定的账号密码)
/*
* 获得链接
*/
public static Connection getConnection() {
try {
Class.forName(CLASSNAME);
return DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
}
return null;
}
/*
* 获得语句对象
*/
public static PreparedStatement getPrepareStatement(Connection conn, String sql) {
try {
return conn.prepareStatement(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
}
return null;
}
/*
* 查询
*/
public static ResultSet query(PreparedStatement ps) {
try {
return ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
}
return null;
}
/*
* 关闭
*/
public static void close(ResultSet rs, PreparedStatement ps, Connection conn) {
try {
rs.close();
ps.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
}
}
}
3.entry—User类
根据user表中的字段来定义User类中的属性,记得提供get,set方法
4.dao—UserDao(数据访问对象,用于java和user表的连接后的具体操作)
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import entry.User;
import util.operate;
public class UserDao {
public User queryByUsername(User user) {
Connection conn = operate.getConnection();
String sql = "select * from user where username=? and password=?";
PreparedStatement ps = operate.getPrepareStatement(conn, sql);
ResultSet rs = null;
try {
// 传入参数
ps.setString(1, user.getUserName());
ps.setString(2, user.getPassword());
// 将ps带入数据库进行查询
rs = operate.query(ps);
if (rs.next()) {
User s = new User();
s.setId(rs.getInt(1));
s.setUserName(rs.getString(2));
s.setPassword(rs.getString(3));
s.setGender(rs.getString(4));
return s;
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
operate.close(rs, ps, conn);
}
return null;
}
}
5.service—UserService
用于GUI面板功能的实现和调用UserDao的方法
package service;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import dao.UserDao;
import entry.User;
import view.userVew;
public class UserService {
UserDao dao = new UserDao();
public void login(User user) {
User s = dao.queryByUsername(user);
if (s != null) {
JOptionPane.showMessageDialog(null, "登录成功");
// 跳转页面
userVew frame = new userVew();
frame.setVisible(true);
frame.setLocationRelativeTo(null);
} else {
JOptionPane.showMessageDialog(null, "登录失败,用户名或者密码错误");
}
}
}
6.view—panel(用户面板创建)
package view;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import entry.User;
import service.UserService;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class panel extends JFrame {
private JPanel contentPane;
private JTextField usernameField;
private JTextField passwordField_1;
private UserService userService = new UserService();
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
panel frame = new panel();
frame.setVisible(true);
frame.setLocationRelativeTo(null);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public panel() {
setTitle("\u4E60\u9898\u96C6");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 1068, 707);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
usernameField = new JTextField();
usernameField.setBounds(179, 166, 632, 57);
contentPane.add(usernameField);
usernameField.setColumns(10);
passwordField_1 = new JTextField();
passwordField_1.setBounds(179, 312, 632, 57);
contentPane.add(passwordField_1);
passwordField_1.setColumns(10);
JButton selectButton = new JButton("\u767B\u5F55");
selectButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
User user = new User();
user.setUserName(usernameField.getText());
user.setPassword(passwordField_1.getText());
userService.login(user);
}
});
selectButton.setBounds(413, 462, 165, 47);
contentPane.add(selectButton);
JLabel lblNewLabel = new JLabel("\u7528\u6237\u540D");
lblNewLabel.setBounds(179, 141, 81, 21);
contentPane.add(lblNewLabel);
JLabel lblNewLabel_1 = new JLabel("\u5BC6\u7801");
lblNewLabel_1.setBounds(179, 285, 81, 21);
contentPane.add(lblNewLabel_1);
}
}
面板展示:
#成果展示#
下图为跳转后页面,为后续制作步骤,别急嘿嘿嘿