java使用验证码进行登录验证

随机生成4位验证码,将生成的4位数字字母数字放入session

private static void outputVerifyCode(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        BufferedImage img = new BufferedImage(68, 22, 1);

        Graphics g = img.getGraphics();
        Random r = new Random();
        Color c = new Color(200, 150, 255);
        g.setColor(c);

        g.fillRect(0, 0, 68, 22);

        StringBuffer sb = new StringBuffer();
        char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();
        int len = ch.length;

        for (int i = 0; i < 4; i++) {
            int index = r.nextInt(len);
            g.setColor(new Color(r.nextInt(88), r.nextInt(188), r.nextInt(255)));
            g.setFont(new Font("Arial", 2, 22));
            g.drawString(String.valueOf(ch[index]), i * 15 + 3, 18);
            sb.append(ch[index]);
        }
        request.getSession().setAttribute("verifypic", sb);
        ImageIO.write(img, "JPG", response.getOutputStream());
    }

比对将登录提交的验证码和session里的验证码同时转为小写并比较

private boolean chekcVerifycode(String inputStr, String correctStr) {
        return inputStr.toLowerCase().equals(correctStr.toLowerCase());
    }
原文地址:https://www.cnblogs.com/fxfly/p/4642394.html