图片验证码的生成

图片验证码的生成

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        
        //6、设置头,控制浏览器不要缓存图片数据
        response.setHeader("Expires", "-1");
        response.setHeader("Cache-Control", "no-cache");
        response.setHeader("pragma", "no-cache");
        
        //5、通知浏览器以图片的方式打开
        response.setHeader("content-type", "image/jpeg");
        
        //1、在内存中创建一幅图片
        BufferedImage image = new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);
        
        //2、得到图片
        Graphics g = image.getGraphics();
        //设置图片背景颜色
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, 80, 20);
        
        //3、向图片上写数据
        g.setColor(Color.BLUE);
        g.setFont(new Font(null,Font.BOLD,20));
        g.drawString(makeNum(), 0, 20);
        
        
        //4、将图片写给浏览器
        ImageIO.write(image, "jpg", response.getOutputStream());
    }

随机数的生成

//生成七位随机数的函数
    private String makeNum() {
        
        Random r = new Random();
        String num = r.nextInt(9999999) + "";
        StringBuffer sb = new StringBuffer();
        for (int i=0;i<7-num.length();i++){
            sb.append("0");        //不够七位的用“0”补充
        }
        
        num = sb.toString()+num;    //字符串合并
        
        return num;
    }

中文验证码

  • 将常用字的编码放到一个数组中,然后使用随机数调用即可。

你可能感兴趣的:(图片验证码的生成)