java生成图片验证码示例程序
2023-06-13 09:15:13 时间
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>登陆页面</title>
<scripttype="text/javascript">
functionrefresh(){
loginForm.image.src="creatImage.jsp";
}
</script>
</head>
<body>
<h1>欢迎登陆本系统</h1><br>
<formaction=""method="post"name="loginForm">
<label>账号:<inputname="username"type="text"/></label><br>
<label>密码:<inputname="password"type="password"/></label><br>
<label>验证码:<inputname="code"type="text"/></label>
<!--将验证码当做图片处理-->
<imgname="image"border="0"src="creatImage.jsp"onclick="refresh()"/>
<inputtype="submit"value="登陆"/>
</form>
</body>
</html>
<%@pageimport="java.util.Random"%>
<%@pageimport="java.awt.Graphics"%>
<%@pageimport="javax.imageio.*"%>
<%@pageimport="java.awt.*"%>
<%@pageimport="java.awt.image.BufferedImage"%>
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%
finalchar[]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"};
intwidth=100,height=60;
BufferedImagebi=newBufferedImage(width,height,
BufferedImage.TYPE_INT_RGB);
Graphicsg=bi.getGraphics();
g.setColor(newColor(200,200,200));
g.fillRect(0,0,width,height);
Randomrnd=newRandom();
StringBuffersb=newStringBuffer("");
//产生四位数的字母数字验证码,各个数字的颜色也随即
for(inti=0;i<4;i++){
intnum=rnd.nextInt(str.length);
Colorc=newColor(rnd.nextInt(256),
rnd.nextInt(256),rnd.nextInt(256));
g.setColor(c);
g.setFont(newFont("",Font.BOLD+Font.ITALIC,20));
g.drawString(str[num]+"",10,17);
sb.append(str[num]);
}
//划干扰线
for(inti=0;i<10;i++){
Colorc=newColor(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));
}
Strings=newString(sb);
/*
若是产生四位数字,则nextInt(8999)+1000;
然后String.valueOf转换为String
*/
//验证码存入session里,方便在登陆校检页比对
session.setAttribute("image",s);
//输出到页面
ImageIO.write(bi,"JPEG",response.getOutputStream());
/*
加入下面这两句什么作用呢?
否则报异常:java.lang.IllegalStateException:getOutputStream()
hasalreadybeencalledforthisresponse
不管原因了
*/
out.clear();
out=pageContext.pushBody();
%>
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>图片生成</title>
</head>
<body>
</body>
</html>
相关文章
- java long string 转换_Java long 转成 String的实现[通俗易懂]
- Java连接MySQL mysql-connector-java-bin.jar驱动包的下载与安装
- java 104规约_IEC104规约,Java开发主站程序
- java 链表长度_Java实现单向链表[通俗易懂]
- java locale 中国_Java描述语言、国家和地理的类——Locale
- java motherfree video_Java Config 下的Spring Test方式
- 一个完整的java程序示例_write javabean error fastjson
- java notifyall_Java Thread notifyAll()方法[通俗易懂]
- 【Java】jar启动的java程序报错FileNotFoundException
- 使用JAVA实现签名验证示例程序详解架构师
- 解决Java程序连接MySQL的准确方案:Java连接MySQL的Jar包(java连接mysql的jar包)
- 学习如何使用Linux环境运行Java程序(linux下的java)
- 数据库实现Java程序与Oracle数据库的连接(java链接oracle)
- 程序Linux命令调用Java程序实现交互(linux命令java)
- Java里的Redis事务处理(redis事务java)
- 构建Redis实现Java程序的自动过期构建(redisjava过期)
- 时间解决Java程序中Redis过期时间问题(redisjava过期)
- Java程序在Linux系统中实现命令操作(java运行linux命令)
- 使用Java程序执行Linux指令:实现自动化操作(java执行linux命令)
- Oracle数据库中调用Java实现可扩展应用程序(oracle内嵌java)
- 数据库Java程序使用Oracle数据库的基本操作(Java用oracle)
- 异常Java程序捕获Oracle异常从失败中学习(java捕获oracle)
- Java和Oracle技术融合,汇聚智能新大陆(java oracle包)
- java学习笔记(入门篇)_java程序helloWorld
- java程序中foreach用法示例