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日
最近浏览更多
asddwh LV12
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日
2890440805 LV3
2022年8月4日