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);
        } 
    }

     

  • 相关阅读:
    查看hbase中的中文
    查看hbase中的中文
    scala使用hbase新api
    scala使用hbase新api
    IDEA15使用maven编译scala和java
    IDEA15使用maven编译scala和java
    IDEA非sbt下spark开发
    IDEA非sbt下spark开发
    sed初学者实用说明
    sed初学者实用说明
  • 原文地址:https://www.cnblogs.com/lastingjava/p/9991514.html
Copyright © 2011-2022 走看看