myloginlistener2.java
来自「java+sql 图书管理系统」· Java 代码 · 共 136 行
JAVA
136 行
package MyLibraryok.MyLogin;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import MyLibraryok.Mydb.*;
import MyLibraryok.MyMain.*;
/**
* <p>Title: 登陆监听</p>
*
* <p>Description:
* 调用getPassword通常不直接得到JPsswordField的字符串,
* 因为字符串容易在内存中泄露,有被截获的危险,
* 所以密码在使用后应该及时清除</p>
*
* <p>Copyright: 082401 (c) 2007</p>
*
* <p>Company: 清代IT0824</p>
*
* @author 侯韶君
* @version 2.0
*/
public class MyLoginListener2 implements ActionListener {
MyLogin2 myLogin;
static int i = 1; //i控制登录次数
public MyLoginListener2(MyLogin2 myLogin) {
this.myLogin = myLogin;
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == myLogin.buttonLogin) {
login();
} else if (e.getSource() == myLogin.textUserName) {
myLogin.password.requestFocus();
} else if (e.getSource() == myLogin.password) {
myLogin.buttonLogin.requestFocus();
}
}
/**
* login
*/
public String userN;
public static String userName = null;
private void login() {
Mydb db = new Mydb();
String strFind;
//把JPasswordField的字符串返回给字符数组
char[] pw = myLogin.password.getPassword();
//因为SQL不能用字符数组,所以转换成字符串
String pass = new String(pw);
userN = myLogin.textUserName.getText();
userName = userN;
//清除内存中的密码
for (int i = 0; i < pw.length; i++) {
pw[i] = 0;
}
//测试清除成功
// for(int n = 0; n<pw.length; n++){
//
// System.out.println("pw" + n + ">>>>" + pw[n]);
// }
//
strFind = "select * from users where 用户名='" +
userN + "' and 密码='" + new MyPassword().MyPassword(pass) +
"'";
ResultSet re;
//只能三次输入错误
if (i != 3) {
i++;
//判断用户名和密码是否为空
if (userN.length() == 0 || pw.length == 0) { //信息提示
JOptionPane.showMessageDialog(myLogin, "用户名或密码不可以为空:", "消息框",
JOptionPane.OK_CANCEL_OPTION);
} else {
try {
re = db.sqlcha(strFind);
if (re.next()) { //判断密码 是否正确
System.out.println("成功");
new MainFrame2();
myLogin.dispose();
} else { //密码错误提示
JOptionPane.showMessageDialog(myLogin, "用户名或密码输入错误",
"消息框",
JOptionPane.OK_CANCEL_OPTION);
//选中用户名框中的所有字符,网页上常见效果
myLogin.password.setText("");
myLogin.textUserName.requestFocus();
{
myLogin.textUserName.setSelectionStart(0);
myLogin.textUserName.setSelectionEnd(myLogin.
textUserName.
getText().
length());
}
}
} catch (SQLException es) { //异常错误提示
JOptionPane.showMessageDialog(myLogin, "数据库未能连接", "消息框",
JOptionPane.OK_CANCEL_OPTION);
es.printStackTrace();
}
}
} else {
JOptionPane.showMessageDialog(myLogin, "登录失败", "消息框",
JOptionPane.OK_CANCEL_OPTION);
System.exit(0);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?