生成随机验证码
 VerifyCode 工具类

成都创新互联公司是一家集网站建设,兴庆企业网站建设,兴庆品牌网站建设,网站定制,兴庆网站建设报价,网络营销,网络优化,兴庆网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
- package com.meeno.common.cerifycode;
 - import javax.imageio.ImageIO;
 - import java.awt.*;
 - import java.awt.image.BufferedImage;
 - import java.io.FileNotFoundException;
 - import java.io.FileOutputStream;
 - import java.io.IOException;
 - import java.io.OutputStream;
 - import java.util.Random;
 - /**
 - * @description: 随机验证码
 - * @author: Wzq
 - * @create: 2020-09-08 16:55
 - */
 - public class VerifyCode {
 - private int w=70;
 - private int h=35;
 - private Random r= new Random();
 - private String[] fontNames={"宋体","华文楷体","黑体","微软雅黑","楷体_GB2312"};
 - private String codes="012345678901234567890123456789abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
 - 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 = this.r.nextInt(fontNames.length);
 - String fontName = fontNames[index]; int style = this.r.nextInt(4);
 - int size = this.r.nextInt(5) + 24;
 - return new Font(fontName, style, size);
 - } private void drawLine (BufferedImage image){
 - int num = 3;
 - Graphics2D g2=(Graphics2D)image.getGraphics(); for(int i=0;i
 - 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(this.codes.length());
 - return this.codes.charAt(index);
 - } private BufferedImage createImage(){
 - BufferedImage image=new BufferedImage(this.w,this.h,BufferedImage.TYPE_INT_RGB);//BufferedImage.TYPE_INT_RGB
 - Graphics2D g2 = (Graphics2D)image.getGraphics();
 - g2.setColor(this.bgColor);
 - g2.fillRect(0,0,this.w,this.h);
 - return image;
 - }
 - public BufferedImage getImage(){
 - BufferedImage image=createImage();
 - Graphics2D g2=(Graphics2D)image.getGraphics();
 - StringBuilder sb = new StringBuilder();
 - for(int i =0;i<4;i++){
 - String s= randomChar()+"";
 - sb.append(s);
 - float x= i*1.0F*this.w/4.0F;
 - g2.setFont(randomFont());
 - g2.setColor(randomColor());
 - g2.drawString(s,x,this.h-5);
 - }
 - this.text=sb.toString();
 - drawLine(image);//添加干扰线
 - return image;
 - }
 - //返回验证码上的文本
 - public String getText(){
 - return this.text;
 - }
 - //保存图片到指定的输出流
 - public static void output(BufferedImage image, OutputStream out)
 - throws IOException {
 - ImageIO.write(image,"JPEG",out);
 - }
 - public static void main(String[] args) throws IOException {
 - VerifyCode vc=new VerifyCode();
 - BufferedImage bi = vc.getImage();
 - VerifyCode.output(bi,new FileOutputStream("E:\\work\\temp\\xxx.jpg"));
 - System.out.println("图片中的验证是:"+vc.getText());
 - }
 - }
 
使用
- /**
 - * 生成随机验证码 */ @RequestMapping("randomVerifyCode.do")
 - public ResponseBean randomVerifyCode() throws IOException { VerifyCode vc = new VerifyCode(); BufferedImage bi = vc.getImage(); //VerifyCode.output(bi,response.getOutputStream());
 - ByteArrayOutputStream out = new ByteArrayOutputStream(); ImageIO.write(bi, "png", out);
 - byte[] bytes = out.toByteArray();
 - String str = Base64.encode(bytes); str = "data:image/png;base64," + str;
 - String uuid = IdUtil.simpleUUID(); Map
 resultMap = Maps.newHashMap(); resultMap.put("base64", str); - resultMap.put("uuid", uuid);
 - //save redis String key = "RandomVerify:" + uuid;
 - RedisUtil.set(key, vc.getText(), 180);
 - return ResultUtil.success(resultMap);
 - }
 
验证方法
- /**
 - * 账号登录
 - * @param session
 - * @param phone
 - * @param pwd
 - * @param entryType
 - * @return
 - */
 - @RequestMapping("accountLogin.do")
 - public ResponseBean accountLogin(final HttpSession session, String phone, String pwd, String entryType,
 - String uuid, String randomCerifyCode){
 - //校验验证码
 - MeenoAssert.hasLength(randomCerifyCode,"randomCerifyCode can not empty!");
 - Object randomCerifyCodeObj = RedisUtil.get("RandomVerify:" + uuid);
 - MeenoAssert.notNull(randomCerifyCodeObj, CErrEnum.RANDOM_VERIFY_CODE_FAILURE);
 - MeenoAssert.isTrue(randomCerifyCode.toLowerCase().equals(randomCerifyCodeObj.toString().toLowerCase()), CErrEnum.RANDOM_VERIFY_CODE_ERR);
 - LoginResult loginResult = this.employeeService.accountLogin(session, phone, pwd, entryType);
 - EmpView employeeView = this.employeeService.getEmployee(loginResult.getUserInfo().getId());
 - Map
 resultMap = Maps.newHashMap(); - resultMap.put("loginResult", loginResult);
 - resultMap.put("employee", employeeView);
 - return ResultUtil.success(resultMap);
 - }
 
                网页题目:基于Java实现随机字母数字验证码
                
                链接地址:http://www.csdahua.cn/qtweb/news43/290043.html
            
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网