package com.jy.servlet; /* * 时间:2018-08-08 * 作者:黄奇 * */ import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class CheckCodeServlet extends HttpServlet{ private static final long serialVersionUID = 8597644014366031304L; public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /* * 绘图 */ //1.创建一个内存映像对象(画布)。 BufferedImage image = new BufferedImage(80,30, BufferedImage.TYPE_INT_RGB); //2.获得画笔 Graphics g = image.getGraphics(); //3.给画笔上色 Random r = new Random(); g.setColor(new Color(r.nextInt(255), r.nextInt(255),r.nextInt(255))); //4.开始绘图 //4.1给画布设置背景颜色 g.fillRect(0, 0, 80, 30); //4.2给画笔设置一个颜色 g.setColor(new Color(0,0,0)); g.setFont(new Font(null,Font.ITALIC,20)); //4.3在画布上绘图 //A~Z,0~9随机选取5位 String number = getNumber(5); //将验证码(number)绑订到session对象上 HttpSession session = request.getSession(); session.setAttribute("number", number); g.drawString(number, 5, 20); //4.4加上一些干扰线 for(int i=0;i<8;i++){ g.drawLine(r.nextInt(80), r.nextInt(30), r.nextInt(80), r.nextInt(30)); } /* * 将图片压缩并输出 */ //1.设置content-type消息头,告诉浏览器 //返回的是一个jpeg格式的图片 response.setContentType("image/jpeg"); //2.获得一个字节输出流(因为是图片) OutputStream ops = response.getOutputStream(); //3.将图片压缩并输出 javax.imageio.ImageIO .write(image, "jpeg", ops); ops.close(); } /* * 返回指定长度的一个字符串 * (由A~Z,0~9中选取) */ private String getNumber(int size) { String number = ""; String chars = "ABCDEFGHI" + "JKLMNOPQRSTUVWXYZ01234" + "56789"; Random r = new Random(); for(int i=0;i<size;i++){ number += chars.charAt( r.nextInt(chars.length())); } return number; } }
最近下载更多
846488283 LV4
2023年5月28日
lvhongquan LV11
2022年5月22日
JohnAlex LV9
2022年2月22日
gezellig LV6
2021年10月21日
messi_Liu LV1
2019年12月4日
qq348438222 LV1
2019年10月18日
qianxinyue LV1
2019年7月5日
李七七 LV1
2019年7月2日
嘎嘎嘎01 LV1
2019年6月25日
ldd5333333 LV4
2019年6月16日
最近浏览更多
xiao1111 LV3
6月18日
asddwh LV13
2023年12月26日
zj20020510 LV5
2023年9月18日
936684178 LV2
2023年6月26日
Merdan_810
2023年6月9日
暂无贡献等级
846488283 LV4
2023年5月28日
Akail003
2023年4月6日
暂无贡献等级
cyn123456
2023年2月13日
暂无贡献等级
3174233007
2022年12月19日
暂无贡献等级
与哲rhcy LV6
2022年12月4日