前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java代码片段之生成验证码

Java代码片段之生成验证码

作者头像
Java编程指南
发布2019-08-02 16:05:09
9130
发布2019-08-02 16:05:09
举报
文章被收录于专栏:Java编程指南

前言:

今天给大家分享一个Java生成前台验证码的代码片段,有需要的同学们记得收藏哦!话不多说直接上代码:

代码:

代码语言:javascript
复制
/**
 * 
 */
package com.becom.dkyd.webapp.util;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.becom.dkyd.common.Constant;
public class RandomCodeServlet extends HttpServlet
{
    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = 5916019367240722024L;
     
    private int width = 60;
     
    private int height = 20;
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = img.createGraphics();
         
        Random random = new Random();
         
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, width, height);
         
        Font font = new Font("Times New Roman", Font.PLAIN, 18);
        g.setFont(font);
         
        // 边框
        g.setColor(Color.BLACK);
        g.drawRect(0, 0, width - 1, height - 1);
         
        // 干扰线
        g.setColor(Color.GRAY);
        for (int i = 0; i < 60; i++)
        {
            int x = random.nextInt(width);
            int y = random.nextInt(height);
            int x1 = random.nextInt(12);
            int y1 = random.nextInt(12);
            g.drawLine(x, y, x + x1, y + y1);
        }
         
        // 保存验证码
        StringBuffer randomCode = new StringBuffer();
        int red = 0;
        int green = 0;
        int blue = 0;
         
        // 生成验证码
        for (int i = 0; i < 4; i++)
        {
        String strRand = String.valueOf(random.nextInt(10));
             
            red = random.nextInt(110);
            green = random.nextInt(50);
            blue = random.nextInt(50);
             
            g.setColor(new Color(red, green, blue));
            g.drawString(strRand, 13 * i + 6, 16);
             
            randomCode.append(strRand);
        }
         
        // 验证码放入session中
        HttpSession session = req.getSession();
        //需要验证的地方
        //加入session
        
        // 禁止图象缓存
        resp.setHeader("Pragma", "no-cache");
        resp.setHeader("Cache-Control", "no-cache");
        resp.setDateHeader("Expires", 0);
         
        resp.setContentType("image/jpeg");
         
        // 输出图象
        ServletOutputStream sos = resp.getOutputStream();
        ImageIO.write(img, "jpeg", sos);
        sos.close();
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java编程指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
验证码
腾讯云新一代行为验证码(Captcha),基于十道安全栅栏, 为网页、App、小程序开发者打造立体、全面的人机验证。最大程度保护注册登录、活动秒杀、点赞发帖、数据保护等各大场景下业务安全的同时,提供更精细化的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档