zoukankan      html  css  js  c++  java
  • 如何生成验证码图片?

    通过这个servlet生成验证码图片,并将验证码以字符串的形式存入SelectSession!!

    /**
     * 负责生成验证码图片,并将验证码字符串信息存入到session中
     * @author 蔡俊伟
     *
     */
    public class ValidCodeServlet extends HttpServlet{
        @Override
        public void service(HttpServletRequest request,HttpServletResponse response) throws IOException {
            //获取一张图片
            BufferedImage image = new BufferedImage(200,100,BufferedImage.TYPE_INT_RGB);
            //生成一个画笔
            Graphics2D graphics = image.createGraphics();
            //设置画笔的颜色
            graphics.setColor(Color.WHITE);
            //填充一个矩形空间
            graphics.fillRect(0, 0, 200, 100);
            Random random = new Random();
            //生成一个0到9的随机数集合
            List<Integer> validCodeList = new ArrayList<Integer>();
            for(int i=0;i<4;i++) {
                validCodeList.add(random.nextInt(10));
            }
            //生成一个随机颜色集合
            List<Color> colorList = new ArrayList<Color>();
            colorList.add(Color.BLACK);
            colorList.add(Color.BLUE);
            colorList.add(Color.GREEN);
            colorList.add(Color.RED);
            colorList.add(Color.YELLOW);
            //设置字体
            graphics.setFont(new Font("font",Font.BOLD|Font.PLAIN,40));
            //在image图片中写入数字
            for(int i=0;i<validCodeList.size();i++) {
                //在颜色集合中随便获取一个颜色
                graphics.setColor(colorList.get(random.nextInt(colorList.size())));
                //写入数字
                graphics.drawString(validCodeList.get(i)+"",i*40+5, 70+random.nextInt(31)-10);
            }
            //画两条横线
            for(int i=0;i<3;i++) {
                graphics.setColor(colorList.get(random.nextInt(colorList.size())));
                graphics.drawLine(0, 50+random.nextInt(30), 200, 50+random.nextInt(30));
            }
            //将四个验证码以字符串存入session
            request.getSession().setAttribute("validCode",""+validCodeList.get(0)+validCodeList.get(1)+validCodeList.get(2)+validCodeList.get(3));
            //将验证码图片响应给浏览器
            ServletOutputStream outputStream = response.getOutputStream();
            ImageIO.write(image, "jpg", outputStream);
        } 
    }

     

  • 相关阅读:
    php7下安装event扩展
    ReactPHP── PHP版的Node.js(转)
    如何将python中的List转化成dictionary
    python3中的zip函数(转)
    python requests的content和text方法的区别(转)
    解决python3 UnicodeEncodeError: 'gbk' codec can't encode character 'xXX' in position XX(转)
    Python语言特性之3:@staticmethod和@classmethod
    Linux 按时间批量删除文件(删除N天前文件)
    简述 OAuth 2.0 的运作流程(转)
    基于jQuery8款超赞的评分插件
  • 原文地址:https://www.cnblogs.com/lastingjava/p/9991514.html
Copyright © 2011-2022 走看看