JSP生成验证码
来源:互联网 发布:163网络硬盘 编辑:程序博客网 时间:2024/04/30 20:30
image.jsp
<%@pagelanguage="java"import="java.util.*"pageEncoding="gb2312"%>
<%@pagecontentType="image/jpeg"import="java.awt.*,
java.awt.image.*,java.util.*,javax.imageio.*"%>
<%!
//随机颜色
ColorgetRandColor(intfc,intbc)
{
Randomrandom=newRandom();
if(fc>255)fc=255;
if(bc>255)bc=255;
intr=fc+random.nextInt(bc-fc);
intg=fc+random.nextInt(bc-fc);
intb=fc+random.nextInt(bc-fc);
returnnewColor(r,g,b);
}
%>
<%
out.clear();
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
//定义图片的长度和高度
intwidth=60,height=20;
//在内存中创建图像
BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
Graphicsg=image.getGraphics();
//随机类
Randomrandom=newRandom();
//设置背景
g.setColor(getRandColor(200,250));
g.fillRect(0,0,width,height);
//字体定义
g.setFont(newFont("Times New Roman",Font.PLAIN,18));
g.setColor(getRandColor(160,200));
//用线条画背景
for(inti=0;i<155;i++)
{
intx=random.nextInt(width);
inty=random.nextInt(height);
intxl=random.nextInt(12);
intyl=random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
//生成验证码随机数
StringsRand="";
for(inti=0;i<4;i++){
Stringrand=String.valueOf(random.nextInt(10));
sRand+=rand;
g.setColor(newColor(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
g.drawString(rand,13*i+6,16);
}
//将认证码存入SESSION
session.setAttribute("code",sRand);
g.dispose();
//输出图像
ImageIO.write(image,"JPEG",response.getOutputStream());
%>
login.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@pagecontentType="text/html; charset=gb2312"language="java"import="java.sql.*"errorPage=""%>
<html>
<head>
<title>登录页面</title>
<scriptlanguage="javascript">
functionloadimage(){
document.getElementById("randImage").src="image.jsp?"+Math.random();
}
</script>
</head>
<body>
<formaction="check.jsp"method="post"name="loginForm">
<tdwidth="118"height="22" valign="middle"align="center"><inputtype="text"name="code"size="15"></td>
<tdwidth="138"align="center"><ahref="javascript:loadimage();"><imgname="randImage"id="randImage"src="image.jsp"width="60"height="20" valign="middle"border="1"></a>点击图片刷新
<inputtype="submit"name="login"value="提交"></td>
</form>
</body>
</html>
check.jsp
1
2
3
4
5
6
7
8
9
10
<%@pagecontentType="text/html; charset=gb2312"language="java"%>
<%
Stringrand=(String)session.getAttribute("code");
Stringinput=request.getParameter("code");
if(rand.equals(input)){
out.print("<script>alert('验证成功');</script>");
}else{
out.print("<script>alert('验证失败');location.href='login.jsp';</script>");
}
%>
- JSP生成验证码
- JSP生成验证码
- JSP生成验证码
- jsp 生成验证码
- jsp生成验证码
- jsp生成验证码
- jsp生成验证码
- jsp生成验证码
- jsp生成验证码
- jsp 生成验证码
- jsp生成验证码
- JSP生成验证码
- JSP生成验证码
- JSP生成验证码
- JSP生成验证码
- jsp 生成验证码
- JSP生成验证码
- JSP生成验证码
- 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒
- [Andriod官方训练教程]创建你的第一个App之运行你的App
- PreferenceActivity详解
- 使用双向链表实现双端队列
- UITableView常用小技巧
- JSP生成验证码
- Ubuntu 上安装jenkins 自动测试ruby on rails
- linux pptpd vpn客户端设置
- WMI技术介绍和应用——查询系统信息和补丁包信息
- linux内存管理之sys_brk实现分析【一】
- 自学XNA路(二)新手上路-移动背景图片
- this与super的应用
- linux内存管理之sys_brk实现分析【二】
- 整理Oracle 11g登陆方法