Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 827|回复: 0

JAVA生成验证码实例 大手勿喷

[复制链接]

该用户从未签到

发表于 2014-3-14 16:30:21 | 显示全部楼层 |阅读模式
本帖最后由 websos 于 2014-3-14 16:31 编辑

package test;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.Servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Verification extends HttpServlet {  
Random rnd=new Random();
    public void doGet(HttpServletRequest request, HttpServletResponse response)  
  
    throws ServletException, IOException {  
  
        this.doPost(request, response);  
    }  
    // 生成数字和字母的验证码   
    public void doPost(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {  
        BufferedImage img = new BufferedImage(80, 24, BufferedImage.TYPE_INT_RGB);  
        // 得到该图片的绘图对象   
        Graphics g = img.getGraphics();  
        Random r = new Random();  
        int w=0,h=0;
        Color c=null;
        while(w< img.getWidth()){
         int n=rnd.nextInt(img.getWidth()/4);
         h=0;
         while(h<img.getHeight()){
          int m=rnd.nextInt(img.getHeight()/4);
           c= new Color(rnd.nextInt(55)+200, rnd.nextInt(55)+200, rnd.nextInt(55)+200);  
              g.setColor(c);  
                 g.fillRect(w, h, n, m);  
          h+=m;
         }
           w+=n;
        }
        // 向图片中输出数字和字母   
        StringBuffer sb = new StringBuffer();  
        char[] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789".toCharArray();  
        int index, len = ch.length;  
        for (int i = 0; i < 4; i++) {  
            index = r.nextInt(len);  
            g.setColor(new Color(r.nextInt(200), r.nextInt(200), r.nextInt  
            (55)+200));  
            g.setFont(new Font("新宋体", Font.BOLD|Font.PLAIN, 22));  
            // 输出的  字体和大小                     
            g.drawString("" + ch[index], (i * 18)+2 , 18);  
            //写什么数字,在图片 的什么位置画   
            sb.append(ch[index]);  
        }  
        System.out.println(sb.toString());
        request.getSession().setAttribute("piccode", sb.toString());  
        ImageIO.write(img, "PNG", response.getOutputStream());  
    }  
}  




小弟开始工作了哇咔咔,不过第一个项目很大很不利,今天做了个验证码生成,从上到下从左到右的背景颜色全是随机的,这样安全性好些不容易被识别

QQ644556636  希望java大手多多指教


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-5-3 22:48 , Processed in 0.388927 second(s), 50 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表