java验证码代码_JAVA生成验证码代码

1 /**

2 * 生成验证码3 * 改造生成验证码的方式,将图片base64形式传到前台,而不是直接传验证码到前台4 *@return

5 *@throwsIOException6 */

7 public void imageCode() throwsIOException {8 HttpServletResponse resp =CommandContext.getResponse();9 HttpServletRequest req =CommandContext.getRequest();10 String method=req.getMethod();11 if(“OPTIONS”.equals(method)){12 return;13 }14 Map map=newHashMap();15

16 //在内存中创建图象

17 int width = 65, height = 38;18 BufferedImage image = newBufferedImage(width, height,19 BufferedImage.TYPE_INT_RGB);20 //获取图形上下文

21 Graphics g =image.getGraphics();22 //生成随机类

23 Random random = newRandom();24 //设定背景色

25 g.setColor(getRandColor(230, 255));26 g.fillRect(0, 0, 100, 40);27 //设定字体

28 g.setFont(new Font(“Arial”, Font.CENTER_BASELINE | Font.ITALIC, 20));29 //产生0条干扰线,

30 g.drawLine(0, 0, 0, 0);31

32 //存放验证码

33 StringBuffer sRand = newStringBuffer();34 for (int i = 0; i < charCount; i++) {35 String singleCode =String.valueOf(codeSequence[random.nextInt(codeSequence.length)]);36 sRand.append(singleCode);37 //将认证码显示到图象中

38 g.setColor(getRandColor(100, 150));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成

39 g.drawString(singleCode, 14 * i + 5, 25);40 }41 for(int i=0;i

47 HttpSession session =req.getSession();48 //获取clientid

49 String clientId=SystemUtil.getClientId(req);50 if(StringUtils.isEmpty(clientId)){51 //生成clientid

52 String userAgent=req.getHeader(“User-Agent”);53 String sessionId=session.getId();54 String cip=IpPolicy.getClientIP(req);55 clientId=CodeUtil.genClientId(sessionId,cip,userAgent);56 }57 map.put(“clientId”, clientId);58 if(isValidateCodeCaseSensitive) {59 session.setAttribute(“randomCode”, sRand.toString());60 SystemUtil.push2Cache(clientId, sRand.toString());61 } else{62 session.setAttribute(“randomCode”, sRand.toString().toLowerCase());63 SystemUtil.push2Cache(clientId, sRand.toString().toLowerCase());64 }65 //图象生效

66 g.dispose();67 try{68

69 ByteArrayOutputStream outputStream = newByteArrayOutputStream();70 ImageIO.write(image, “jpg”, outputStream);71 BASE64Encoder encoder = newBASE64Encoder();72 String base64Img =encoder.encode(outputStream.toByteArray());73 base64Img=”data:image/jpg;base64, “+base64Img.replaceAll(“”, “”).replaceAll(“r”, “”);//删除 r;

74 map.put(“verCode”, base64Img);75 Object jsonObj =JSONSerializer.toJSON(map);76 byte[] json = jsonObj.toString().getBytes(“UTF-8”);77 resp.setContentType(“text/plain;chartset=utf-8”);78 resp.setHeader(“Cache-Control”, “no-cache”);79 resp.setHeader(“Expires”, “0”);80 resp.setIntHeader(“Content-Length”, json.length);81 ServletOutputStream responseOutputStream =resp.getOutputStream();82 responseOutputStream.write(json);83 //以下关闭输入流!

84 responseOutputStream.flush();85 responseOutputStream.close();86 //获得页面key值

87 return;88 } catch(IOException e) {89 logger.error(“生产验证码出错”,e);90 throw new SystemException(“生产验证码出错”,e);91 }92 }93

94

95 /**

96 * 给定范围获得随机颜色97 *98 *@paramfc99 *@parambc100 *@return

101 */

102 Color getRandColor(int fc, intbc) {103 Random random = newRandom();104 if (fc > 255)105 fc = 255;106 if (bc > 255)107 bc = 255;108 int r = fc + random.nextInt(bc -fc);109 int g = fc + random.nextInt(bc -fc);110 int b = fc + random.nextInt(bc -fc);111 return newColor(r, g, b);112 }

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年7月4日 21:15
下一篇 2022年7月4日 21:15

相关推荐

  • 笔记本最好配置(目前笔记本最好的配置)

    本文主要讲的是笔记本最好配置,以及和目前笔记本最好的配置相关的知识,如果觉得本文对您有所帮助,不要忘了将本文分享给朋友。 笔记本电脑什么配置好? 01 CPU:这个主要取决于频率和…

    2022年11月26日
  • 淘宝直播平台抽成多少(淘宝直播平台抽成比例)

    随着时代的发展,现在直播带货已经成为主要带货方式,其中淘宝是主流带货平台,不少人在上面直播带货赚钱,一些小伙伴也想加入,那么淘宝直播平台抽成多少?下面小编为大家带来淘宝直播平台抽成…

    2022年11月24日
  • 白衬衫搭配什么裤子好看,女生衬衫穿法图片

    说起白衬衫和长裤的搭配组合,不知道大家有没有发现,虽然是很常见的造型,可不同年龄段惯用的穿搭方式却不相同,从而也穿出了不同的味道。简直是现在这个季节,时髦精们的必备造型之一~ 70…

    2022年11月24日
  • 神舟战神S7-DA5NS电脑预售 到手价仅需5399元

    神舟战神S7-DA5NS正在京东商城预售抢购,预售到手价仅需5399元。其搭载了全新12代i5-12450H处理器,拥有2.0GHz八核十二线程效能,RTX3050 4G GDDR…

    2022年11月23日
  • 中兴Axon 40 Ultra航天版发布时间官宣 或有18G+1TB版

    此前,中兴手机官微曾预热中兴Axon 40 Ultra航天版。宣传海报显示,“太空堡垒,即将起航,TAIKONAUT(中国航天员) Ⅱ”。 2022年11月22日,中兴手机发布消息…

    2022年11月22日
  • 天玑1300和8100哪个好差距大吗 跑分性能参数区别对比

    天玑1300和天玑8100哪个好?近期有用户在咨询,手机处理器搭载的是天玑1300的好还是天玑8100的好?这两款处理器之间哪一款更加出色呢?下面小编给大家带来具体区别对比,感兴趣…

    2022年11月22日
  • 鬼的图片(鬼的图片 头像)

    今天小编给各位分享鬼的图片的知识,其中也会对鬼的图片 头像进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧! 鬼长什么样子呀?(发图片来) 鬼很可怕的,要裁图片…

    2022年11月22日
  • word方框中打√符号教程 打钩符号怎么打出来框怎么点击就打上

    Word怎么在方框中打√符号?最近有用户询问这个问题,Word是一款很实用的办公软件,在编辑的时候需要输入方框带个√的符号,很多用户不知道怎么输入,针对这一问题,本篇带来了详细的输…

    2022年11月21日
  • 马斯克凌晨一点半晒“代码审查”现场,编排他的段子比疯狂星期四还多

    梦晨 Pine 发自 凹非寺 量子位 | 公众号 QbitAI 每一个真正会写代码的人,请在下午2点到总部10层报到。 每一个真正会写代码的人,请在下午2点到总部10层报到。 马斯…

    2022年11月21日
  • 展字的各种写法图片(展笔顺什么意思)

    昨天我们讲解了上展下收,今天我们讲解上收下展,看过昨天文章内容的朋友,对今天所讲的内容应该不难理解。 结构八:上收下展。 简单来说就是上边部分的笔画收缩,下边部分笔画舒展。详细讲解…

    2022年11月19日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息