前台登录页面生成验证码

Posted wangchuanfu

tags:

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

    @RequestMapping(value = "/system/keyword")
    public void keyword(HttpServletRequest request, HttpServletResponse response) throws IOException {
        // 设置页面不缓存
        response.setHeader("Pragma", "No-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        // 在内存中创建图象
        int width = 60, height = 20;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        // 获取图形上下文
        Graphics g = image.getGraphics();
        // 生成随机类
        Random random = new Random();
        // 设定背景色
        // g.setColor(getRandColor(200,250));
        g.setColor(new Color(250, 250, 250));
        g.fillRect(0, 0, width, height);

        // 设定字体
        g.setFont(new Font("Times New Roman", Font.PLAIN, 18));
        // 画边框
        // g.setColor(new Color());
        // g.drawRect(0,0,width-1,height-1);
        // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
        // g.setColor(getRandColor(160,200));
        g.setColor(new Color(250, 250, 250));
        for (int i = 0; i < 155; i++) {
            int x = random.nextInt(width);
            int y = random.nextInt(height);
            int xl = random.nextInt(12);
            int yl = random.nextInt(12);
            g.drawLine(x, y, x + xl, y + yl);
        }
        // 取随机产生的认证码(4位数字)
        String sRand = "";
        for (int i = 0; i < 4; i++) {
            String rand = KeywordImg.getRandomString();// 韩剑锋 注释于 2008-01-26--
            sRand += rand;
            // 将认证码显示到图象中
            // g.setColor(new
            // Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
            g.setColor(new Color(0, 0, 0));
            // 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
            g.drawString(rand, 13 * i + 6, 16);
        }
        // 将认证码存入SESSION
        request.getSession().setAttribute("keyword", sRand);
        // 图象生效
        g.dispose();
        // 输出图象到页面
        ImageIO.write(image, "JPEG", response.getOutputStream());
    }

 

 

/**
 * 刷新快速登录验证码
 */
function refreshCode() {
    $("#ymimg").attr("src",
        appPath + "/system/keyword.html?" + Math.random() + 100);
}
/**
 * wangchuanfu
 *
 * 用户按回车键登录
 */
function keyLogin() {
    if (event.keyCode == 13)   //回车键的键值为13
        document.getElementById("ptLogin").click();  //调用登录按钮的登录事件
}

 

以上是关于前台登录页面生成验证码的主要内容,如果未能解决你的问题,请参考以下文章

Java----前端验证之验证码额实现

前台系统 注册功能

java 登陆时的验证码怎么做?

pbootcms对接微信扫码登录代码核心片段和步骤(前后端)

JAVA生成验证码代码

Yii2中后台用前台的代码设置验证码显示不出来?