jsp中如何添加验证码?

jsp中如何添加验证码?,第1张

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

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

<%!

Color getRandColor(int fc,int bc){//给定范围获得随机颜色

Random random = new Random()

if(fc>255) fc=255

if(bc>255) bc=255

int r=fc+random.nextInt(bc-fc)

int g=fc+random.nextInt(bc-fc)

int b=fc+random.nextInt(bc-fc)

return new Color(r,g,b)

}

%>

<%

//设置页面不缓存

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

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

//response.setDateHeader("Expires", 0)

// 在内存中创建图象

int width=60, height=20

BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB)

// 获取图形上下文

Graphics g = image.getGraphics()

//生成随机类

Random random = new Random()

// 设定背景色

g.setColor(getRandColor(200,250))

g.fillRect(0, 0, width, height)

//设定字体

g.setFont(new Font("Times New Roman",Font.PLAIN,18))

//画边框

//g.setColor(new Color())

//g.drawRect(0,0,width-1,height-1)

// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到

g.setColor(getRandColor(160,200))

for (int i=0i<155i++)

{

int x = random.nextInt(width)

int y = random.nextInt(height)

int xl = random.nextInt(12)

int yl = random.nextInt(12)

g.drawLine(x,y,x+xl,y+yl)

}

// 取随机产生的认证码(4位数字)

String sRand=""

for (int i=0i<4i++){

String rand=String.valueOf(random.nextInt(10))

sRand+=rand

// 将认证码显示到图象中

g.setColor(new Color(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())

%>

可以要,也可以不要。

你是要加手机验证码还是图片验证码?如果是手机验证码,需要找第三方短信网站接口; 如果是图形验证码,有生成图形验证码的开发工具包。

过一段时间让这些数据失效就可以了。

jsp本身是包装了一个后台servlet对前台的输入,所以页面技术的支持就不是很好不过也不是不能做

要做验证码,自然是要用到ajax技术了,后台写一个servlet,产生二个随机数,拼出这二个数的加法结果存到session中,然后把式子显示到前台。

数据提交jsp提交的时候,后台servlet把输入的验证码与session中取出来的值做比较,记得比完比session中这个attribute删掉。

关于ajax技术,我这里就不说了,google一下吧,提示你一点

可以在<body onload="init()">

然后写一个js方法,在init中用ajax访问验证码的servlet

祝你好运!


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11899406.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存