首页 > 其他分享 >Servlet生成验证码

Servlet生成验证码

时间:2023-01-06 23:23:53浏览次数:54  
标签:int resp random 验证码 生成 graphics new Servlet

Servlet生成验证码

重写doGet和doPost方法

1. java代码
        // 图片高度
        private static final int IMG_HEIGHT = 100;
        // 图片宽度
        private static final int IMG_WIDTH = 30;
        // 验证码长度
        private static final int CODE_LEN = 4;
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

//        浏览器每分钟刷新一次
        resp.setHeader("refresh","60");

        BufferedImage bi = new BufferedImage(IMG_HEIGHT, IMG_WIDTH, BufferedImage.TYPE_INT_RGB);

        // 获取绘图工具
        Graphics graphics = bi.getGraphics();

        // 使用RGB设置背景颜色
        graphics.setColor(new Color(100, 230, 200));

        // 填充矩形区域
        graphics.fillRect(0, 0, 100, 30);

        // 验证码中所使用到的字符
        char[] codeChar = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".toCharArray();
        StringBuilder captcha = new StringBuilder();

        // 存放生成的验证码
        Random random = new Random();
        for(int i = 0; i < CODE_LEN; i++) {

            // 循环将每个验证码字符绘制到图片上
            int index = random.nextInt(codeChar.length);

            // 随机生成验证码颜色
            graphics.setColor(new Color(random.nextInt(150), random.nextInt(200), random.nextInt(255)));

            // 将一个字符绘制到图片上,并制定位置(设置x,y坐标)
            graphics.drawString(codeChar[index] + "", (i * 20) + 15, 20);
            captcha.append(codeChar[index]);
        }

        // 将生成的验证码code放入session中
        req.getSession().setAttribute("code", captcha.toString());

        // 通过ImageIO将图片输出
        ImageIO.write(bi, "png", resp.getOutputStream());
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }

代码来源

2. web.xml代码
<servlet>
    <servlet-name>image</servlet-name>
    <servlet-class><!-->类文件<--></servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>image</servlet-name>
    <url-pattern>/image</url-pattern>
</servlet-mapping>
3. 实例图

标签:int,resp,random,验证码,生成,graphics,new,Servlet
From: https://www.cnblogs.com/yorha/p/17031868.html

相关文章

  • Servlet重定向
    Servlet重定向/转发就一行代码resp.sendRedirect("/response/image");//也可以跳转去jsp文件resp.sendRedirect("/response/success.jsp");不过要注意添加项目名,不......
  • 技术汇总:第十一章:生成二维码
    二维码什么是二维码二维码又称QRCode,QR全称QuickResponse,是一个近几年来移动设备上超流行的一种编码方式,它比传统的BarCode条形码能存更多的信息,也能表示更多的数据类......
  • Nginx https证书生成
    一、证书和私钥的生成1234567891011121314151617181920212223241.创建服务器证书密钥文件server.key:opensslgenrsa-des3-outser......
  • 自动生成android动画配置文件
    importflash.net.FileReference;importflash.system.System;varxs:XML=<animation-listxmlns:android="http://schemas.android.com/apk/res/android"android:oneshot......
  • 在创建servlet的时候可以直接通过下面的方式创建
    但是这样创建的servlet注解里面的内容是默认的,我们需要去设置里面去修改:......
  • Java生成二维码并浏览器下载,也可打包成zip下载
    不说废话,直接上代码1.单个生成二维码并下载codeNo为前端传的需要生产二维码的内容publicvoidqrCode(HttpServletRequestrequest,HttpServletResponseresponse,Stri......
  • 简单java servlet的登录脚本,部署到docker
    先打算参考这篇文章Simpleloginpageexampleusingjspservlet-Candidjava内含war文件和zip文件。但是tomcat上该war文件总是报错。于是又参考这篇(46条消息)Jav......
  • .Net Core 用自动生成Dockerfile的坑
    简介  之前采用shell脚本+dockerfile的方式构建项目,后来发现Docker在17.05版本之后有多阶段构建方式,该文主要记录了netcore采用dockerfile构建遇到的坑。原先的方式......
  • JAVA利用google的zxing快速生成QRCode
    利用google的zxing快速生成QRCode1.导入jar包,如果是非maven工程就去mvnrepository.com搜索zxing,下载本jar包即可<dependency><groupId>com.google.zxing</groupId><......
  • 【微信小程序】小程序原生代码生成海报[转]
    官方文档https://github.com/Kujiale-Mobile/Painter  目录结构(亲测有效) 海报【微信小程序】小程序原生代码生成海报==>https://blog.csdn.net/weixin_422321......