精华内容
下载资源
问答
  • java 验证码生成代码
    2017-12-23 15:17:32
    package com.cms.yzm;

    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.util.Random;

    /**
    * <b style="color:red">
    * 描述: 验证码生成器类,可生成数字、大写、小写字母及三者混合类型的验证码。
    * 支持自定义验证码字符数量;
    * 支持自定义验证码图片的大小;
    * 支持自定义需排除的特殊字符;
    * 支持自定义干扰线的数量;
    * 支持自定义验证码图文颜色
    * </b>
    * @author ChenZhou_cms
    * @category 验证码生成器类
    */
    public class VerifyCodeImgUtil {
    /**
    * 验证码类型为数字、大写字母、小写字母混合
    */
    public static final int TYPE_ALL_MIXED=2;

    private VerifyCodeImgUtil(){}

    /**
    * 生成验证码字符串
    * @param type 验证码类型,参见本类的静态属性
    * @param length 验证码长度,大于0的整数
    * @param exChars 需排除的特殊字符(仅对数字、字母混合型验证码有效,无需排除则为null)
    * @return 验证码字符串
    */
    public static String generateTextCode(int type,int length,String exChars){
    if(length<=0) return "";
    StringBuffer code=new StringBuffer();
    int i=0;
    Random r=new Random();
    switch(type)
    {
    case TYPE_ALL_MIXED:
    while(i<length){
    int t=r.nextInt(123);//返回值是0~123
    if((t>=97||(t>=65&&t<=90))&&(exChars==null||exChars.indexOf((char)t)<0)){
    code.append((char)t);
    i++;
    }
    }
    break;
    }
    return code.toString();
    }


    /**
    * 已有验证码,生成验证码图片
    * @param textCode 文本验证码
    * @param width 图片宽度
    * @param height 图片高度
    * @param interLine 图片中干扰线的条数
    * @param randomLocation 每个字符的高低位置是否随机
    * @param backColor 图片颜色,若为null,则采用随机颜色
    * @param foreColor 字体颜色,若为null,则采用随机颜色
    * @param lineColor 干扰线颜色,若为null,则采用随机颜色
    * @return 图片缓存对象
    */
    public static BufferedImage generateImageCode(String textCode,int width,int height,int interLine,boolean randomLocation,Color backColor,Color foreColor,Color lineColor){

    BufferedImage bim=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
    Graphics g=bim.getGraphics();
    //画背景图
    g.setColor(backColor==null?getRandomColor():backColor);
    g.fillRect(0,0,width,height);
    //画干扰线
    Random r=new Random();
    if(interLine>0){
    int x=0,y=0,x1=width,y1=0;
    for(int i=0;i<interLine;i++){
    g.setColor(lineColor==null?getRandomColor():lineColor);
    y=r.nextInt(height);
    y1=r.nextInt(height);
    g.drawLine(x,y,x1,y1);
    }
    }
    //写验证码
    //g.setColor(getRandomColor());
    //g.setColor(isSimpleColor?Color.BLACK:Color.WHITE);
    //字体大小为图片高度的80%
    int fsize=(int)(height*0.8);
    int fx=height-fsize;
    int fy=fsize;
    g.setFont(new Font(Font.DIALOG,Font.PLAIN,fsize));
    //写验证码字符
    for(int i=0;i<textCode.length();i++){
    fy=randomLocation?(int)((Math.random()*0.3+0.6)*height):fy;
    g.setColor(foreColor==null?getRandomColor():foreColor);
    g.drawString(textCode.charAt(i)+"",fx,fy);
    fx+=fsize*0.9;
    }
    g.dispose();
    return bim;
    }
    /**
    * 生成图片验证码
    * @param type 验证码类型,参见本类的静态属性
    * @param length 验证码字符长度,大于0的整数
    * @param exChars 需排除的特殊字符
    * @param width 图片宽度
    * @param height 图片高度
    * @param interLine 图片中干扰线的条数
    * @param randomLocation 每个字符的高低位置是否随机
    * @param backColor 图片颜色,若为null,则采用随机颜色
    * @param foreColor 字体颜色,若为null,则采用随机颜色
    * @param lineColor 干扰线颜色,若为null,则采用随机颜色
    * @return 图片缓存对象
    */
    public static BufferedImage generateImageCode(int type,int length,String exChars,int width,int height,int interLine,boolean randomLocation,Color backColor,Color foreColor,Color lineColor){
    String textCode=generateTextCode(type,length,exChars);
    BufferedImage bim=generateImageCode(textCode,width,height,interLine,randomLocation,backColor,foreColor,lineColor);
    return bim;
    }
    /**
    * 随机生成颜色
    * @return
    */
    private static Color getRandomColor(){
    Random r=new Random();
    Color c=new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255));
    return c;
    }


    }
    更多相关内容
  • 验证码JAVA代码自动的生成绘制,适合不用JS写验证码,实现的功能更好
  • java验证码生成代码

    2013-08-19 14:27:01
    java中验证码的生成代码工具类,/** * 验证码生成工具类! */
  • 主要介绍了java 随机生成6位短信验证码的实例代码,文中给大家扩展介绍了java随机生成四位数字验证码的方法,需要的朋友可以参考下
  • NULL 博文链接:https://godo121.iteye.com/blog/1542224
  • 主要介绍了java随机验证码生成实现实例代码的相关资料,需要的朋友可以参考下
  • 主要介绍了java生成图片验证码实例代码验证码的种类有很多,问题验证、短信验证还有常见的图片验证,本文就为大家介绍生成图片验证码最简单方法,感兴趣的小伙伴们可以参考一下
  • JAVA实现验证码(完整代码),一个完整地验证码例子。
  • JCaptcha 是一个用来生成验证码的开源Java类库,使用起来也是非常的简单方便。本文通过代码实例介绍了JCaptcha类库。
  • java实现验证码生成

    2020-06-08 14:40:39
    * 获取验证码 * @param model * @param request * @param response * @param session */ @ResponseBody @RequestMapping(value = "/getCaptcha") public void verificationCode...

     

    /**
     * 获取验证码
     * @param model
     * @param request
     * @param response
     * @param session
     */
    @ResponseBody
    @RequestMapping(value = "/getCaptcha")
    public void verificationCode(Map<String, Object> model,
    					HttpServletRequest request, HttpServletResponse response,HttpSession session) {
    		StringBuffer randBuffer = new StringBuffer();
    		for (Integer i = 1; i <= 4; i++) {
    			randBuffer.append(new Random().nextInt(10));
    		}
    		String rand = randBuffer.toString();
    		response.setHeader("Cache-Control", "no-cache");
    		response.setHeader("Cache-Control", "no-store");
    		response.setDateHeader("Expires", 0L); //设置验证码保存的时间
    		response.setHeader("Pragma", "no-cache");
    		session.setAttribute("vcode", rand); //记住验证码
    		try {
    			createCodeUtil vcodeService = new createCodeUtil();
    			ImageIO.write((RenderedImage) vcodeService.drawRandNumber(rand),
    							"JPEG", response.getOutputStream());
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    }

     工具类

    package com.test.util;
    
    import java.awt.*;
    import java.awt.image.BufferedImage;
    import java.io.Serializable;
    import java.util.Random;
    
    public class createCodeUtil implements Serializable{
    
    	private int width = 40;
    	private int height = 20;
    	private String fontName = "Times New Roman";
    	private int fontSize = 14;
    	private static BufferedImage image = new BufferedImage(40, 20, 1);
    
    	/* (non-Javadoc)
    	 * @see com.baoz.zhouzhou.service.impl.IVcodeService#drawRandNumber(java.lang.String)
    	 */
    	public synchronized Image drawRandNumber(String rand) {
    		Graphics g = image.getGraphics();
    		refreshBgColor(g);
    		g.setFont(new Font(fontName, 0, fontSize));
    		g.setColor(getRandColor(0, 120));
    		g.drawString(rand, 6, 16);
    		g.dispose();
    		return image;
    	}
    
    	private static Random RANDOM = new Random();
    
    	private void refreshBgColor(Graphics g) {
    		g.fillRect(0, 0, width, height);
    		g.setColor(getRandColor(160, 200));
    		for (int i = 0; i < 100; i++) {
    			int x = RANDOM.nextInt(width);
    			int y = RANDOM.nextInt(height);
    			int xl = RANDOM.nextInt(12);
    			int yl = RANDOM.nextInt(12);
    //			g.drawLine(x, y, x + xl, y + yl);
    		}
    
    	}
    
    	private Color getRandColor(int fc, int bc) {
    		if (fc > 255) {
    			fc = 255;
    		}
    		if (bc > 255) {
    			bc = 255;
    		}
    		int r = fc + RANDOM.nextInt(bc - fc);
    		int g = fc + RANDOM.nextInt(bc - fc);
    		int b = fc + RANDOM.nextInt(bc - fc);
    		return new Color(r, g, b);
    	}
    
    	public void setFontName(String fontName) {
    		this.fontName = fontName;
    	}
    
    	public void setFontSize(int fontSize) {
    		this.fontSize = fontSize;
    	}
    
    	public void setHeight(int height) {
    		this.height = height;
    		image = new BufferedImage(width, height, 1);
    	}
    
    	public void setWidth(int width) {
    		this.width = width;
    		image = new BufferedImage(width, height, 1);
    	}
    
    	public static void main(String[] args) {
    	}
    }
    
    

    最终效果

    展开全文
  • 主要介绍了Java随机生成手机短信验证码的实例代码代码分为哦简单版和复杂版,需要的朋友可以参考下
  • 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要...

     


    前言

    利用java语言基础语句生成所需要的验证码

    一、Random随机生成数方法生成验证码

    1.代码+详细注释:

    package String类常用API;
    
    import java.util.ArrayList;
    import java.util.Random;
    
    public class 验证码的几种生成方法 {
        public static void main(String[] args) {
            //1,用随机生成数方法,生成验证码
            Random yzm = new Random();                          //定义一个随机生成数技术,用来生成随机数
    
            String yzm2 = "";                                   //定义一个空的Atring变量用来接收生成的验证码
    
            for (int i = 0; i < 5; i++) {                       //循环5次每次生成一位,5位验证码
    
            int a = yzm.nextInt(3);                             //验证码包括数字、大小写字母组成
            switch(a){                                          //a:    0       1       2
                case 0:                                         //      数字   小写字母   大写字母
                    char s=(char)(yzm.nextInt(26)+65);
                    yzm2 = yzm2 + s;
                    break;
                case 1:
                    char s1=(char)(yzm.nextInt(26)+97);
                    yzm2 = yzm2 + s1;
                    break;
                case 2:
                    int s2=yzm.nextInt(10);
                    yzm2 = yzm2 + s2;
                    break;
            }
            }
            System.out.println("用随机生成数方法,生成的验证码:"+yzm2);
    }
    }

    2 、运行结果:

     

    二、用String常用API-charAit生成验证码

    1.代码+详细注释:

    package String类常用API;
    
    import java.util.ArrayList;
    import java.util.Random;
    
    public class 验证码的几种生成方法 {
        public static void main(String[] args) {
            Random yzm = new Random();                          //定义一个随机生成数技术,用来生成随机数
    //2,用String常用API-charAit生成验证码
            String yzm1 = "1234567890abcdefghijklmnopqrstuvwxwzABCDEFGHIJKLMNOPQRSTUVWXYZ";//定义一个String变量存放需要的数据,一共58位
            String yzm3 = "";//定义一个空的Atring变量用来接收生成的验证码
            for (int i = 0; i < 5; i++) {
                int a = yzm.nextInt(58);//随机生成0-57之间的数,提供索引位置
                yzm3+=yzm1.charAt(a);//用get 和提供的索引找到相应位置的数据给变量
            }
            System.out.println("用String常用API-charAit生成的验证码为:"+yzm3);
    
    
        }
    }

    2.运行结果

                    


    总结


    以上就是今天要讲的内容,本文仅仅简单介绍了用java语言生成验证码的两种方法,String-charAit方法较为易懂,利用索引获取该位置字符接到空字符串完成验证码的生成,Random随机生成数方法生成验证码则是利用switch语句完成验证码生成。

    展开全文
  • Java生成验证码代码

    万次阅读 多人点赞 2018-11-01 19:36:55
    在看崔老师的javaweb视频,第十二节课,看了源代码,自己动手写了写,有些地方和老师给的源码不同,比如获取字体那块,老师返回的是Color类型(直接设置了font,style,size),我返回的是字体名字(String) 附上自己写的...

    在看崔老师的javaweb视频,第十二节课,看了源代码,自己动手写了写,有些地方和老师给的源码不同,比如获取字体那块,老师返回的是Color类型(直接设置了font,style,size),我返回的是字体名字(String)

    附上自己写的源代码

    VerifyCode.java

    package cn.edou.image;
    
    import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    
    public class VerifyCode {
    	//定义一些变量
    	private int x = 200;
    	private int y = 80;
    	private int fontSize = 70;
    	private StringBuilder sb = new StringBuilder();
    	private Random random = new Random();
    	private Color bgColor = new Color(255,255,255);
    	private String[] fontsName = {"宋体", "华文楷体", "黑体", "华文新魏", "华文隶书", "微软雅黑", "楷体_GB2312"};
    	private String codes = "23456789abcdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ";
    	//获取随机的字体
    	private String getFont(){
    		int index = random.nextInt(fontsName.length);
    		String fontName = fontsName[index];
    		return fontName;
    	}
    	//获取字母
    	private String getChar(){
    		int index = random.nextInt(codes.length());
    		String ch = codes.charAt(index)+"";
    		return ch;
    	}
    	//获取颜色
    	private Color getColor(){
    		int red = random.nextInt(150);
    		int green = random.nextInt(150);
    		int blue = random.nextInt(150);
    		return new Color(red,green,blue);
    	}
    	//设置缓冲区
    	private BufferedImage getBufferedImage(){
    		BufferedImage bi = new BufferedImage(x,y,BufferedImage.TYPE_INT_RGB);
    		Graphics2D pen = (Graphics2D)bi.getGraphics();
    		pen.setColor(this.bgColor);
    		pen.fillRect(0,0,x,y);
    		return bi;
    	}
    	//给缓冲区添加字符串,添加干扰线
    	private BufferedImage addCharAndLine(){
    		BufferedImage bi = getBufferedImage();
    		Graphics2D pen = (Graphics2D)bi.getGraphics();
    		for(int i=0;i<4;i++){
    		String font = getFont();
    		int style = random.nextInt(4);
    		pen.setColor(getColor());
    		pen.setFont(new Font(font,style,fontSize));
    	    String s = getChar();
    	    sb.append(s);
    		pen.drawString(s, 10+i*50, 65);
    		}
    		int lineNumber = 3;
    		pen.setColor(Color.BLUE);
    //		pen.setStroke(new BasicStroke(1.5F));
    		pen.setStroke(new BasicStroke(1.5F,BasicStroke.CAP_ROUND,BasicStroke.JOIN_MITER));
    		for(int i=0;i<lineNumber;i++){
    			int x1 = random.nextInt(x);
    			int y1 = random.nextInt(y);
    			int x2 = random.nextInt(x);
    			int y2 = random.nextInt(y);
    			pen.drawLine(x1, y1, x2, y2);
    		}
    		return bi;
    	}
    	//获取验证码的值
    	public String getText(){
    		return sb.toString();
    	}
    	//获取一张验证码图片
    	public BufferedImage getImage(){
    		return addCharAndLine();
    	}
    	//输出图片
    	public void outputImage(BufferedImage bi,String imageName){
    		String path = "D:\\JavaWebExercise\\day12\\"+imageName+".jpg";
    		try {
    			ImageIO.write(bi, "JPEG", new FileOutputStream(path));
    		} catch (FileNotFoundException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
    
    }
    
    

    附上老师的源码

    package cn.itcast.image;
    
    import java.awt.BasicStroke;
    import java.awt.Color;
    import java.awt.Font;
    import java.awt.Graphics2D;
    import java.awt.image.BufferedImage;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.Random;
    
    import javax.imageio.ImageIO;
    
    public class VerifyCode {
    	private int w = 70;
    	private int h = 35;
     	private Random r = new Random();
     	// {"宋体", "华文楷体", "黑体", "华文新魏", "华文隶书", "微软雅黑", "楷体_GB2312"}
    	private String[] fontNames  = {"宋体", "华文楷体", "黑体", "微软雅黑", "楷体_GB2312"};
    	// 可选字符
    	private String codes  = "23456789abcdefghjkmnopqrstuvwxyzABCDEFGHJKMNPQRSTUVWXYZ";
    	// 背景色
    	private Color bgColor  = new Color(255, 255, 255);
    	// 验证码上的文本
    	private String text ;
    	
    	// 生成随机的颜色
    	private Color randomColor () {
    		int red = r.nextInt(150);
    		int green = r.nextInt(150);
    		int blue = r.nextInt(150);
    		return new Color(red, green, blue);
    	}
    	
    	// 生成随机的字体
    	private Font randomFont () {
    		int index = r.nextInt(fontNames.length);
    		String fontName = fontNames[index];//生成随机的字体名称
    		int style = r.nextInt(4);//生成随机的样式, 0(无样式), 1(粗体), 2(斜体), 3(粗体+斜体)
    		int size = r.nextInt(5) + 24; //生成随机字号, 24 ~ 28
    		return new Font(fontName, style, size);
    	}
    	
    	// 画干扰线
    	private void drawLine (BufferedImage image) {
    		int num  = 3;//一共画3条
    		Graphics2D g2 = (Graphics2D)image.getGraphics();
    		for(int i = 0; i < num; i++) {//生成两个点的坐标,即4个值
    			int x1 = r.nextInt(w);
    			int y1 = r.nextInt(h);
    			int x2 = r.nextInt(w);
    			int y2 = r.nextInt(h); 
    			g2.setStroke(new BasicStroke(1.5F)); 
    			g2.setColor(Color.BLUE); //干扰线是蓝色
    			g2.drawLine(x1, y1, x2, y2);//画线
    		}
    	}
    	
    	// 随机生成一个字符
    	private char randomChar () {
    		int index = r.nextInt(codes.length());
    		return codes.charAt(index);
    	}
    	
    	// 创建BufferedImage
    	private BufferedImage createImage () {
    		BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); 
    		Graphics2D g2 = (Graphics2D)image.getGraphics(); 
    		g2.setColor(this.bgColor);
    		g2.fillRect(0, 0, w, h);
     		return image;
    	}
    	
    	// 调用这个方法得到验证码
    	public BufferedImage getImage () {
    		BufferedImage image = createImage();//创建图片缓冲区 
    		Graphics2D g2 = (Graphics2D)image.getGraphics();//得到绘制环境
    		StringBuilder sb = new StringBuilder();//用来装载生成的验证码文本
    		// 向图片中画4个字符
    		for(int i = 0; i < 4; i++)  {//循环四次,每次生成一个字符
    			String s = randomChar() + "";//随机生成一个字母 
    			sb.append(s); //把字母添加到sb中
    			float x = i * 1.0F * w / 4; //设置当前字符的x轴坐标
    			g2.setFont(randomFont()); //设置随机字体
    			g2.setColor(randomColor()); //设置随机颜色
    			g2.drawString(s, x, h-5); //画图
    		}
    		this.text = sb.toString(); //把生成的字符串赋给了this.text
    		drawLine(image); //添加干扰线
    		return image;		
    	}
    	
    	// 返回验证码图片上的文本
    	public String getText () {
    		return text;
    	}
    	
    	// 保存图片到指定的输出流
    	public static void output (BufferedImage image, OutputStream out) 
    				throws IOException {
    		ImageIO.write(image, "JPEG", out);
    	}
    }
    
    

    想生成的话可以创建一个java文件来调用其中的方法,最后输出到指定的目录,在这里我指定的是D盘符,文件名自己给出,不用给后缀(第一个代码)

    最后给出一个测试类,大家看看效果

    @Test
    	public void testVerifyCode(){
    		VerifyCode vc = new VerifyCode();
    		BufferedImage bi = vc.getImage();
    		vc.outputImage(bi, "test2");
    		System.out.println(vc.getText());
    	}
    

    最后一张图片是没有任何效果的,可以无视
    生成的二维码效果图

    展开全文
  • 主要为大家分享了java验证码生成具体代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 并将绘制在图片上的验证码存放到session中用于后续验证最后通过ImageIO将生成的图片进行输出通过页面提交的验证码和存放在session中的验证码对比来进行校验二、生成验证码页面通过访问servlet来生成验证码,servlet...
  • 一个登录验证生成验证码用struts 后台生成验证码在jsp页面输出生成图片
  • 主要为大家详细介绍了Java验证码图片生成代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 利用java自动生成验证码,是图片的格式哦
  • 后台java 实现验证码生成

    万次阅读 多人点赞 2018-11-05 18:23:55
    后台实现验证码生成   效果图如下: 1.适用需求 后台生成验证码,用于登陆验证。   2. 功能实现所需控件/文件: 无(普通标签)   3.功能点实现思路 1)前台思路: (1)前台一个&lt;input&...
  • JAVA代码制作验证码,可用于注册等功能页面 要导入servlet-api.jar包 创建验证码的Util工具类: 先创建图片并生成随机的验证码字母 设置图片的底色,并用setFont函数将验证码画在图片上,如果想让验证码难一点,...
  • //利用哈希值生成验证码 int hash =tele.hashCode(); //加密 int encryption= 2020666; //用hash异或上加密得到生成第一次加密结果 //这个生成的加过永远是固定的如果加密码不动的情况下 long result= hash ^...
  • 简单验证码java实现--servlet类生成 验证码img,并写入session老师给的源码,在此做个记录,简单验证码java绘图在此鸣谢并附上源码:.//package app61;import java.io.*;import java.util.*;import ...
  • java 生成图片验证码

    2016-07-07 10:38:22
    java 生成图片验证码 带干扰线等
  • 主要为大家详细介绍了java生成随机图片验证码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 网上的代码结合自己的修改写出了这个验证码生成工具类,只生成字符形式的。 import java.security.SecureRandom; import java.util.Random; /** * 验证码生成工具类 */ public class VerifyCodeUtils { /** * ...
  • 主要为大家详细介绍了java实现随机生成验证码图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要为大家详细介绍了Java实现随机验证码具体代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了Java后台产生验证码后台验证功能,本文文字结合实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • java生成验证码图片的代码案例:publicclassAuthImgextendsHttpServlet{/****/privatestaticfinallongserialVersionUID=4975974534946437434L;//设置图形验证码字符串的字体和大小privateFontmFont=newFont("微软...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 26,529
精华内容 10,611
关键字:

java验证码生成代码

java 订阅