allobject的gravatar头像
allobject 2013-01-09 20:46:18

java随机生成图片验证码

随机生成两种类型的验证码

public class CheckcodeServlet extends HttpServlet {
	public void service(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//step1 创建一个图片,创建一个内存映像对象
		BufferedImage image = new BufferedImage(60,20,BufferedImage.TYPE_INT_RGB);
		//得到画笔
		Graphics g = image.getGraphics();
		Random r = new Random();
		//设置画笔的颜色
		g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
		//设置整个画板的背景颜色
		g.fillRect(0,0, 60, 20);
		//生成一个随机数
		//String number = r.nextInt(99999) + "";
		String number = getNumber(5);
		//将number绑订到session对象上。
		HttpSession session = request.getSession();
		session.setAttribute("number", number);
		g.setColor(new Color(0,0,0));
		g.drawString(number, 5, 15);
		//加一些干扰线
		for(int i=0;i<5;i++){
			g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
			g.drawLine(r.nextInt(60),r.nextInt(20),r.nextInt(60),r.nextInt(20));
		}
		//step2 压缩图片,然后输出
		response.setContentType("image/jpeg");
		OutputStream output = response.getOutputStream();
		javax.imageio.ImageIO.write(image, "jpeg", output);
		
	}
	//随机从"A~Z","0~9"当中取出5个字符
	private String getNumber(int length) {
		Random r = new Random();
		char[] chars = {'A','B','C','D','E','F','G',
				'H','I','J','K','L','M','N','O','P','Q',
				'R','S','T','U','V','W',	'X','Y','Z','0',
				'1','2','3','4','5','6','7','8','9'};
		String number = "";
		for(int i=0;i<length;i++){
			number += chars[r.nextInt(chars.length)];
		}
		return number;
	}


最代码官方编辑于2014-1-23 22:13:06


AXIN编辑于2014-2-12 18:10:19


打赏

文件名:随机生成验证码.rar,文件大小:2K 下载
最代码最近下载分享源代码列表最近下载
blueskyroof  LV9 2019年11月26日
zhouyunfei  LV3 2019年5月17日
skystory  LV11 2019年4月27日
123123zxl  LV11 2018年6月25日
罗明飞  LV4 2018年6月22日
Fdaxiong  LV1 2018年6月10日
yxw0707  LV3 2018年5月21日
1335203  LV10 2018年2月28日
乞丐哥哥  LV23 2018年2月11日
vipsers森林  LV2 2017年12月5日
最代码最近浏览分享源代码列表最近浏览
EFWAGGFAWGR 2023年10月19日
暂无贡献等级
3174233007 2022年12月19日
暂无贡献等级
double_AI  LV1 2022年11月12日
wwww11112222 2022年7月19日
暂无贡献等级
芮坎尚  LV1 2022年5月11日
Jeasonchan898  LV2 2022年4月26日
杨豫川  LV12 2022年4月19日
10816599 2021年9月15日
暂无贡献等级
zhaoxu123123  LV10 2021年9月9日
zzy94269664  LV11 2021年3月16日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友