博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
验证码
阅读量:5991 次
发布时间:2019-06-20

本文共 3184 字,大约阅读时间需要 10 分钟。

1 package cn.meeting.utils; 2  3 import java.awt.Color; 4 import java.awt.Font; 5 import java.awt.Graphics; 6 import java.awt.image.BufferedImage; 7 import java.io.IOException; 8 import java.io.OutputStream; 9 import java.util.Random;10 11 import javax.imageio.ImageIO;12 import javax.servlet.ServletException;13 import javax.servlet.http.HttpServlet;14 import javax.servlet.http.HttpServletRequest;15 import javax.servlet.http.HttpServletResponse;16 import javax.servlet.http.HttpSession;17 18 public class ImgServlet extends HttpServlet {19     private static final long serialVersionUID = 1L;20 21     protected void doGet(HttpServletRequest request, HttpServletResponse response)22             throws ServletException, IOException {23         // 1:声明高宽24         int width = 60;25         int height = 30;26         // 2:定义内存中的图片27         BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);28         // 4:获取G29         Graphics g = img.getGraphics();30         // 5:设置背景为white31         g.setColor(Color.WHITE);32         g.fillRect(0, 0, width, height);33         g.setFont(new Font("宋体", Font.BOLD, 18));34         //35         Random r = new Random();36         StringBuilder stringBuilder = new StringBuilder();37         String str="";38         for (int i = 0; i < 4; i++) {39             //int a = r.nextInt(10);   生成数字验证码40             41             //生成字母验证码42              /*int t = r.nextInt(2);43              char a = t ==0? (char)(r.nextInt(26)+'a'):(char)(r.nextInt(26)+'A');44              stringBuilder.append(a);*/45             46             str = getRandomChar();47             stringBuilder.append(str);48             g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));49             g.drawString("" + str, i * 15, 10 + r.nextInt(20));50         }51 52         //------将验证码保存到session中去53         54         HttpSession session = request.getSession();55         session.setAttribute("randomNum", str);56         57         for (int i = 0; i < 8; i++) {58             g.setColor(new Color(r.nextInt(256), r.nextInt(256), r.nextInt(256)));59             g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height));60         }61 62         //63         g.dispose();64 65         // 设置输出的类型66         response.setContentType("image/jpg");67         OutputStream out = response.getOutputStream();68         // 使用ImageIO69         ImageIO.write(img, "JPEG", out);70     }71     72     /*73      * 生成验证码的方法74      */75      public static String getRandomChar() { 76          int index = (int) Math.round(Math.random() * 2); 77          String randChar = ""; 78          switch (index) { 79          case 0://大写字符 80              randChar = String.valueOf((char)Math.round(Math.random() * 25 + 65)); 81              break; 82          case 1://小写字符 83              randChar = String.valueOf((char)Math.round(Math.random() * 25 + 97)); 84              break; 85          default://数字 86              randChar = String.valueOf(Math.round(Math.random() * 9)); 87              break; 88          } 89          return randChar; 90      } 91 }

 

转载于:https://www.cnblogs.com/fujilong/p/5327858.html

你可能感兴趣的文章
Ant 简易教程
查看>>
逆波兰表达式
查看>>
C语言博客作业3--函数
查看>>
[转]css选择器优先级深入理解
查看>>
CentOS Linux release 7.3源码安装zabbix
查看>>
来自才储分析的报告
查看>>
C#编程(六十二)---------LINQ标准的查询操作符
查看>>
poj 1887 最长递减序列
查看>>
【OpenCV】imread读取数据为空
查看>>
Android模拟器鼠标滑动出现C问题的补充
查看>>
团队作业7——Alpha冲刺之事后诸葛亮
查看>>
[JSOI2007]文本生成器
查看>>
周公解梦
查看>>
磁盘管理
查看>>
使用Spring的@Async创建异步方法
查看>>
Java线程和进程
查看>>
Magento Block的几种调用方式
查看>>
java课堂小练习7
查看>>
2014中国互联网安全大会(ISC)开幕,沃通与您共襄安全盛会
查看>>
《信息检索》课程论文撰写指南 及 分享加分说明
查看>>