JavaWeb实现登录验证码功能

准备一个验证码

protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //禁用缓存
        resp.setHeader("Pragma", "No-cache");
        resp.setHeader("Cache-Control", "No-cache");
        resp.setDateHeader("Expires", 0);

        //根据自己的背景图片设置照片格式
        resp.setContentType("image/jpg");

        int height = 60;
        int width = 140;

        //画板
        BufferedImage image = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
        //画笔
        Graphics graphics = image.getGraphics();

        //设置字体
        Font font = new Font("宋体",Font.BOLD,25);
        graphics.setFont(font);

        //图像输入流,它是从当前已注册 ImageReader 中自动选择的,解码所提供 URL 的结果。
        String imagePath = req.getServletContext().getRealPath("img/ba.jpg");
        Image image1 = ImageIO.read(new File(imagePath));
        //绘制指定图像中已缩放到适合指定矩形内部的图像
        graphics.drawImage(image1,0,0,140,60,null);

        //准备好验证码所需的字符串
        String resource = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        //用于保存验证码
        String info = "";
        //循环四次,从字符串中随机获取四个字符
        for (int i = 0; i < 4; i++) {
            //从字符串中随机获取索引
            int index = new Random().nextInt(resource.length() - 1);
            char myCode = resource.charAt(index);
            Random random = new Random();
            //设置颜色
            graphics.setColor(new Color(20 + random.nextInt(200),20 + random.nextInt(200),20 + random.nextInt(200)));
            //显示文本,设置x,y的偏距
            graphics.drawString(myCode + "",30 + i * 20,35 + new Random().nextInt(10));
            //生成干扰线
            graphics.drawLine(random.nextInt(100),random.nextInt(40),random.nextInt(100),random.nextInt(40));
            //存入info
            info += myCode;
        }

        //设置到session提供给前台
        req.getSession().setAttribute("info",info);

        //释放资源
        graphics.dispose();
        //图像输出流
        OutputStream out = resp.getOutputStream();
        ImageIO.write(image,"jpg",out);
        //关流
        out.flush();
        out.close();
    }

前台显示

因为是图像输出,所以要准备一个img,它的src就填写验证码的servlet

在准备一个click函数,鼠标单击时,刷新验证码

效果展示

到这里,JavaWeb实现登录验证码功能就结束了,希望对你有帮助!!!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值