扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
import java.awt.event.*;
10多年的浈江网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。成都营销网站建设的优势是能够根据用户设备显示端的尺寸不同,自动调整浈江建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联从事“浈江网站设计”,“浈江网站推广”以来,每个客户项目都认真落实执行。
import java.awt.*;
import javax.swing.*;
import java.sql.*;
public class Login extends JFrame implements ActionListener{
JButton button1,button2;
static JTextField text1,text2;
JPanel panel1,panel2,panel3,panel4,panel5;
Container con1;
int count=0;//密码输入次数计数器
Login()
{
super("用户登陆");
text1=new JTextField(10);
text2=new JPasswordField(10);
button1=new JButton("提交");
button2=new JButton("取消");
panel1 = new JPanel();
panel2 = new JPanel();
panel3 = new JPanel();
panel4 = new JPanel();
panel5 = new JPanel();
setLocation(350,250);
con1=getContentPane();
con1.setLayout(new GridLayout(5,1));
con1.setPreferredSize(new Dimension(300,250));
panel1.add(new JLabel(""));
panel2.add(new JLabel("用户名:"));
panel2.add(text1);
panel3.add(new JLabel("密 码:"));
panel3.add(text2);
panel4.add(button1);
panel4.add(button2);
panel5.add(new JLabel(""));
con1.add(panel1);
con1.add(panel2);
con1.add(panel3);
con1.add(panel4);
con1.add(panel5);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ setVisible(false);
System.exit(0);
}
});
button1.addActionListener(this);
button2.addActionListener(this);
this.setResizable(false);
setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==button1)
{
try{登陆();}
catch(SQLException ee){}
}
else if(e.getSource()==button2)
{
退出销售系统();
}
}
public void 登陆() throws SQLException
{
Database db=new Database();
if(count3)
{
if(db.check())
{
JOptionPane.showMessageDialog(this,"登陆成功!","提示对话框",JOptionPane.WARNING_MESSAGE);
setVisible(false);
MainFrame f=new MainFrame();f.pack();
}
else
{
count++;
if(count3)
{
JOptionPane.showMessageDialog(this,"登陆失败!","提示对话框",JOptionPane.WARNING_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(this,"密码错误超过3次!","警告对话框",JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
}
}
else
{
JOptionPane.showMessageDialog(this,"密码错误超过3次!","警告对话框",JOptionPane.WARNING_MESSAGE);
System.exit(0);
}
}
public void 退出销售系统()
{
System.exit(0);
}
}
都是在用户登陆时查询数据库表,一般user表中会有:是否禁用、最后一次登陆时间(到秒)、用户登陆错误次数。
用户登陆时查询该用户数据,进行判断,若是正确,则更新是否禁用为可用、最后登陆时间、错误次数为0.
若是登陆错误时,错误次数+1,若是错误次数=3,则更新是否禁用为禁用,并更新最后一次登陆时间。
若是登陆时该用户数据中是否禁用为禁用,则判断最后一次登陆时间与当前登陆时间相比较,半小时后可以登陆,重复上面流程。
JAVA做登陆必须会HTML,用HTML做出一个用户名密码的界面。
编写后台代码。
如果说想法,也就是对用户名密码的正确性判断和输入字符是否合法,有些登陆需要验证码,可按个人意愿加。
为了安全性,可以写成3次登陆错误就禁止登陆的方式,实现方式使用cookies。
//可以在js中使用正则表达式实现
//1.给input框添加blur事件
$("#loginname").blur(function(){
validateLoginname();
});
//校验函数
function validateLoginname(){
/*
* 1. 用户名不能为空
*/
var id="loginname";
var value=$("#"+id).val();
if(!value){
$("#login-error").text("用户名不能为空");
return false;
}
/*
* 2. 用户名长度不小于6位
*/
if(value.length=6){
$("#login-error").text("用户名长度必须4到20之间");
return false;
}
/*
* 3. 用户名需包含数字和密码,不包含特殊字符
*/
var re = new RegExp("[a-zA-Z]");//字母正则校验
var pasFlag = true;
var len = re.test(value);
if(!len) { //字母匹配不成功, return false
pasFlag = false;
}
re = new RegExp("[0-9]");//数字正则校验
if(!len) { //数字匹配不成功,return false
pasFlag = false;
}
re = new RegExp("((?=[\x21-\x7e]+)[^A-Za-z0-9])");//特殊字符
len=re.test(value);
if(len) {//特殊字符匹配成功,return false;
pasFlag = false;
}
if(!pasFlag){
$("#"+id+"Error").text("密码必须含数字、字母不包含
特殊字符");
return false;
}
}
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class LogonOn extends JFrame implements MouseListener {
private JLabel logonLabel = new JLabel("User");
private JLabel passwordLabel = new JLabel("Password");
private JTextField user = new JTextField();
private JPasswordField password = new JPasswordField();
private JButton enter = new JButton("Logon On");
public LogonOn(){
super("Logon on window");
super.setLayout(new GridLayout(3, 2));
super.add(logonLabel);
super.add(user);
super.add(passwordLabel);
super.add(password);
super.add(enter);
enter.addMouseListener(this);
super.pack();
super.setVisible(true);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void mouseClicked(MouseEvent e){
if(!user.getText().matches("\\d{1,10}") || password.getPassword().length != 6){
JOptionPane.showMessageDialog(null, "Username/password incorrect format!");
}else{
if(user.getText().equals("1234567890") password.getText().equals("mypass")){
JOptionPane.showMessageDialog(null, "Logon success. Welcome " + user.getText() + " back");
}else{
JOptionPane.showMessageDialog(null, "Logon failure for user/password incorrect. Please try again");
}
}
}
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
/**
* @param args
*/
public static void main(String[] args) {
new LogonOn();
}
}
joptionpane.showmessagedialog(null,
"用户身份不合法");
在这里加一个int
值
默认为0
当运行到这里的时候int++
下次多个判断if
int大于等于三
直接登录失败就可以了
正则表达式,是最好的方式。
下面这个正是判断必须同时包含数字和字母的。长度单独检测。
public static void main(String[] argv) {
String reg = "^(\\d+[A-Za-z]+[A-Za-z0-9]*)|([A-Za-z]+\\d+[A-Za-z0-9]*)$";
String name1 = "aaaaaaaaaaa";
String name2 = "123566778";
String name3 = "123123dfgdg";
String name4 = "sdf1rgdd2398gfdhgdwg32452342";
System.out.println(name1.matches(reg));
System.out.println(name2.matches(reg));
System.out.println(name3.matches(reg));
System.out.println(name4.matches(reg));
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流