Java登陆验证码问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java登陆验证码问题相关的知识,希望对你有一定的参考价值。

程序设计思路

随机产生一个6位的字符串
读取用户输入的信息,包括账号密码。
验证用户输入的验证码是不是和产生的随机字符串一样。
如果不是一样的话就提示并且回到重新输入的界面。
如果一样的话就提示登陆成功,并且刷新验证码,以方便下一个用户的使用。

程序流程图

技术分享

程序源代码

import java.awt.Color;
import java.awt.Component;


public static void main(String[] args) {
    // TODO 自动生成的方法存根
JFrame frame=new JFrame("登陆测试");
frame.setBounds(500, 300, 350, 200);
frame.setSize(350,200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   
Panel panel=new Panel();
frame.add(panel);
placeCompoents(panel);
panel.setBackground(Color.LIGHT_GRAY);
frame.setVisible(true);
}
private static void placeCompoents(Panel panel) {
    // TODO 自动生成的方法存根
panel.setLayout(null);
//姓名信息
JLabel userLabel=new JLabel("User");
userLabel.setBounds(10, 20, 80, 25);
panel.add(userLabel);
JTextField userText=new JTextField(20);
userText.setBounds(100, 20, 165, 25);
panel.add(userText);
//密码信息
JLabel passwordLabel=new JLabel("password");
passwordLabel.setBounds(10, 50, 80, 25);
panel.add(passwordLabel);
JPasswordField passwordText=new JPasswordField(20);
passwordText.setBounds(100, 50, 165, 25);
panel.add(passwordText);
//验证码信息
String code="";
for(int i=0;i<6;i++) {      
    int intVal=(int)(Math.random()*26+97);
    code=code+(char)intVal; 
}
String codex=code;
JLabel ident=new JLabel(code);
ident.setBounds(200, 80, 80, 25);
panel.add(ident);
// 验证码文本域
JLabel codes=new JLabel("codes");
codes.setBounds(10, 80, 80, 25);
panel.add(codes);
JTextField codeText=new JTextField(6);
codeText.setBounds(100, 80, 80, 25);
panel.add(codeText);
//按钮
JButton loginButton=new JButton("login");
loginButton.setBounds(100, 100, 80, 25);
panel.add(loginButton);
loginButton.addActionListener(new ActionListener() {    
public void actionPerformed(ActionEvent e) {
    String c=codeText.getText();
    String u=userText.getText();
    char[] p1=passwordText.getPassword();
    String p="";
    p=p.valueOf(p1);
    if(c.equals(codex))
         {
         JOptionPane.showMessageDialog(null,"hello "+u+",欢迎使用!祝您一天愉快");    
//           userText.setText("你妈妈喊你回家吃饭");
         passwordText.setText("");
         codeText.setText("");
         String code="";
            for(int i=0;i<6;i++) {      
                int intVal=(int)(Math.random()*26+97);
                code=code+(char)intVal; 
            }
            String codex=code;
            ident.setText(codex);
         }
     else 
        {
         JOptionPane.showMessageDialog(null,"验证码错误");        
        }     
     }       
}   );
JButton exit=new JButton("exit");
exit.addActionListener(
new ActionListener() {  
public void actionPerformed(ActionEvent e) {
    
 System.exit(0);  
}
}     );
exit.setBounds(200, 100, 80, 25);
panel.add(exit);

}

}

程序运行截图

技术分享

技术分享

技术分享





以上是关于Java登陆验证码问题的主要内容,如果未能解决你的问题,请参考以下文章

Java登陆验证码问题

java 模拟登陆带验证码的网页,就想知道怎么将验证码以图片的形式下载到本地。。。。。

ajax-登陆+验证码(转载)

java实现图片验证码登陆

Java 如何使用 OCR 技术识别验证码实现自动化登陆

登陆页面的验证码生成与验证