Java图片验证码

简介: 一.准备知识         随便一本JavaWeb书上都有,就那几步,看看就ok了,不过可能存在一些问题,路过的指教下。。。 二.代码 登陆页面 function refresh() { loginForm.

一.准备知识

        随便一本JavaWeb书上都有,就那几步,看看就ok了,不过可能存在一些问题,路过的指教下。。。

二.代码

 
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登陆页面</title>
<script type="text/javascript">
	function refresh() {
		loginForm.image.src = "creatImage.jsp";
	}
</script>
 
</head>
<body>
<h1>欢迎登陆本系统</h1><br>
<form action="" method = "post" name="loginForm">
	<label>账号:<input name="username" type="text" /></label><br>
	<label>密码:<input name="password" type="password" /></label><br>
	<label>验证码:<input name="code" type="text" /></label>
	<!-- 将验证码当做图片处理 -->
    <img name="image" border="0" src="creatImage.jsp" onclick="refresh()" />
	<input type="submit" value="登陆" />
</form>
 
</body>
</html>
 
<%@page import="java.util.Random"%>
<%@page import="java.awt.Graphics"%>
<%@page import="javax.imageio.*"%>
<%@page import="java.awt.*"%>
<%@page import="java.awt.image.BufferedImage"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	final char[] str = {'0','1','2','3','4','5','6','7','8','9',
    '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','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'};
	int width=100,height=60;
	BufferedImage bi = new BufferedImage(width,height,
			BufferedImage.TYPE_INT_RGB);
	Graphics g = bi.getGraphics();
	g.setColor(new Color(200,200,200));
	g.fillRect(0, 0, width, height);
	Random rnd = new Random();
	StringBuffer sb = new StringBuffer("");
	//产生四位数的字母数字验证码,各个数字的颜色也随即
	for(int i=0; i<4; i++) {
		int num = rnd.nextInt(str.length);
		Color c = new Color(rnd.nextInt(256),
				rnd.nextInt(256),rnd.nextInt(256));
		g.setColor(c);
		g.setFont(new Font("", Font.BOLD+Font.ITALIC, 20));
		g.drawString(str[num]+"", 10, 17);
		sb.append(str[num]);
	}
	//划干扰线
	for(int i=0; i<10; i++) {
		Color c = new Color(rnd.nextInt(256),
				rnd.nextInt(256),rnd.nextInt(256));
		g.setColor(c);
		g.drawLine(rnd.nextInt(width), rnd.nextInt(height), 
				rnd.nextInt(width), rnd.nextInt(height));
	}
	String s = new String(sb);
	/*
	若是产生四位数字,则nextInt(8999) + 1000;
	然后String.valueOf转换为String
	*/
	//验证码存入session里,方便在登陆校检页比对
	session.setAttribute("image",s);
	//输出到页面
	ImageIO.write(bi,"JPEG",response.getOutputStream());
	/*
	加入下面这两句什么作用呢?
	否则报异常: java.lang.IllegalStateException: getOutputStream() 
	has already been called for this response 
	不管原因了
	*/
	out.clear();
	out = pageContext.pushBody();
	
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>图片生成</title>
</head>
<body>
 
</body>
</html>
目录
相关文章
|
3月前
|
Java
Java开发实现图片URL地址检验,如何编码?
【10月更文挑战第14天】Java开发实现图片URL地址检验,如何编码?
106 4
|
3月前
|
Java
Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
【10月更文挑战第14天】Java开发实现图片地址检验,如果无法找到资源则使用默认图片,如何编码?
76 2
|
3月前
|
算法 Java Linux
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
这篇文章介绍了如何使用Java的Graphics2D类在图片上合成另一个照片,并将照片切割成圆形头像的方法。
62 1
java制作海报二:java使用Graphics2D 在图片上合成另一个照片,并将照片切割成头像,头像切割成圆形方法详解
|
3月前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
220 1
|
3月前
|
前端开发 小程序 Java
java基础:map遍历使用;java使用 Patten 和Matches 进行正则匹配;后端传到前端展示图片三种情况,并保存到手机
这篇文章介绍了Java中Map的遍历方法、使用Pattern和matches进行正则表达式匹配,以及后端向前端传输图片并保存到手机的三种情况。
33 1
|
3月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
134 1
|
3月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
165 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
3月前
|
Java
Java 登录输入的验证码
Java 登录输入的验证码
38 1
|
3月前
|
数据采集 自然语言处理 Python
用 Python 生成并识别图片验证码
用 Python 生成并识别图片验证码
70 1
|
4月前
|
Java
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝
这篇文章介绍了Java中FileInputStream和FileOutputStream的使用,包括如何读取和写入txt文件以及如何拷贝图片文件。
Java-FileInputStream和FileOutputStream的使用,txt文件及图片文件的拷贝