Jsp页面生成随机验证码图片

image.jsp生成随机验证码图片的Jsp页面

 

<%@page contentType="image/jpeg" import="java.awt.*,

java.awt.image.*,java.util.*,javax.imageio.*"%>

<%!

ColorgetRandColor(int fc,int bc)

{

Randomrandom = new Random();

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);

returnnew Color(r,g,b);

}

%>

<%

out.clear();//这句针对resin服务器,如果是tomacat可以不要这句

response.setHeader("Pragma","No-cache");

response.setHeader("Cache-Control","no-cache");

response.setDateHeader("Expires",0);

intwidth=60, height=20;

BufferedImageimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

Graphicsg = image.getGraphics();

Randomrandom = new Random();

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(int i=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(int i=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("rand",sRand);

g.dispose();

ImageIO.write(image,"JPEG", response.getOutputStream());

%>

 

logic.jsp 登陆页面,在这里提供输入验证码然后提交并验证

 

<%@page contentType="text/html;charset=gbk" %>

<%@page language="java" import="java.sql.*"errorPage="" %>

<html>

<head>

<metahttp-equiv="Content-Type" content="text/html; charset=gb2312">

<title>用户登录</title>

<scriptlanguage="javascript">

functionloadimage(){

document.getElementById("randImage").src= "image.jsp?"+Math.random();

}

</script>

</head>

<body>

<tablewidth="256" border="0" cellpadding="0"cellspacing="0">

<!--DWLayoutTable-->

<formaction="validate.jsp" method="post"name="loginForm">

<tr>

<tdwidth="118" height="22" valign="middle"align="center"><input type="text"name="rand" size="15"></td>

<tdwidth="138" valign="middle"align="center"><img alt="code..."name="randImage" id="randImage" src="image.jsp"width="60" height="20" border="1"align="absmiddle"></td>

</tr>

<tr>

<tdheight="36" colspan="2" align="center"valign="middle"><ahref="javascript:loadimage();"><font class=pt95>看不清点我</font></a></td>

</tr>

<tr>

<tdheight="36" colspan="2" align="center"valign="middle"><input type="submit"name="login" value="提交"></td>

</tr>

</form>

</table>

</body>

</html>

validate.jsp用来验证输入的验证码是否正确

 

<%@page contentType="text/html; charset=gb2312"language="java" import="java.sql.*" errorPage=""%>

<%

Stringrand = (String)session.getAttribute("rand");

Stringinput = request.getParameter("rand");

if(rand.equals(input)){

out.print("<script>alert('验证通过!');</script>");

}else{

out.print("<script>alert('请输入正确的验证码!');location.href='login.jsp';</script>");

}

%>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值