这个功能通常一共3个页面:
index.jsp是用来登录用的,在其中显示验证码,即<img src="image.jsp"/>
image.jsp是用来生成验证码的,有注释,很详细,如再不行,你复制到百度就有详解了。
result.jsp 是用来判断输入是否正确的。
相信你一定能看明白...别忘了采纳哦,谢谢。。。
【1.index.jsp】
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html><body>
<form method=post action="result.jsp">
<input type=text name=input maxlength=4>
<img border=0 src="image.jsp">
<input type="submit" value="submit">
</form></body></html>
【2.image.jsp】
<%@ page contentType="image/JPEG"
import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"
pageEncoding="GBK"%>
<%!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 = 0; i < 100; i++) {
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 = 0; i < 4; i++) {
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("code", sRand);
// 图象生效
g.dispose();
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
%>
【3.result.jsp】
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<html><body>
<%
String input=request.getParameter("input");
String code=(String)session.getAttribute("code");
if(input.equals(code)){
out.println("验证成功!");
}else{
out.println("验证失败!");
}
%>
body>html>
温馨提示:内容为网友见解,仅供参考
在JSP中,如何验证输入的验证码是否正确?
一般是在用户输入了验证码后单击提交按钮的时候,此时发送请求回去,在servlet中验证,也可以发异步请求验证,方法和一般的请求一样的
在JSP中,如何验证输入的验证码是否正确?
CreateImage(str_ValidateCode);}这就是验证码代码中的一个方法,这个方法就是生成随机数和把随机数放到session中,你在你的代码中找找有没有类似这句话的代码 追问: 在jsp中设置session不是“session.setAttribute();”吗?
java中如何在同一个jsp页面中判断图片验证码与输入的是否一致
关于JSP刷新验证码有个办法解决!我做项目的时候,就在JSP请求的后面加个随机数,即加个随机书的参数(?<%=Math.random()%)。不然,很多浏览器,像IE,缓存这以为你请求同一个页面。就会出现你说的那个问题了。
如何在jsp页面验证验证码否正确 正确进入登陆页面 不正确 提示验证码错 ...
验证码不能写在HTML里面 一般用Ajax 或者在服务器验证 否则验证码就没有作用了 黑客还是可以自动填表让你的服务器被攻击
jsp 登陆验证码获取出错,大家帮我看看(100分)
用户点击验证码后,把重新生成后的验证码直接放进,response里面,然后用,request.getattribute 去取,不就OK了?说白了,就是调用问题。至于怎么传参,怎么比对,就看LZ的了
JSP有关于登陆页面验证码取不到值的问题?
2.页面上出现语法错误,这种情况较上面的情况的出现的更多。其它情况暂不做考虑。然后我就看到了你上面一行 varsub = form1.rand.value ;很明显应该是手误,var sub中间空格漏掉了,一般页面调错,我们可以通过按F12,看网页控制台有没有报错,若是没有报错,再通过打断点debug。如果你本来不是这样...
JavaScript做的验证码并且在本页判断对比的正确性!
alert("请输入验证码!");return false;} if(form1.checkcode.value!=document.getElementById("verifycode").innerHTML){ alert("验证码不正确!");createcode();return false;} form1.submit();} function createcode(){ var code = "";var array = new Array(0,1,2,3,4,5,6,7,8,...
jsp如何输入错误密码才启动验证码,输入错误3次1小时之内不允许登陆_百 ...
第一个问题:输入错误密码才启动验证码:可以再servlet里面生成验证码:生成时先判断如果密码错误就生成,在jsp页面用el表达式输出,因为密码没验证之前他是验证码出没获取,为null,el遇到null事什么都不输出,所以,用el表达式,我的表达不太清晰望理解 第二个问题:输入错误3次1小时之内不允许登陆 这个...
jsp生成的验证码图片怎么显示不出来,总是一个X框的东西,哪位高手指教...
可以在X的位置,右键属性,看看对应的url是否正确,这样,你首先可以直接访问url,然后,如果正常显示,再放到img标签里,就ok了,还问题,可以提出来,我帮你解决
jsp动态网页中如何连接sql数据库和验证码?
用户输入验证码后,与会话中的存储进行对比以验证其正确性。这些功能通常可以通过第三方库或自定义实现,确保安全性和便捷性。在实现过程中,注意验证码的唯一性和时效性,避免被猜测或重放攻击。此外,为了提高用户体验,可以考虑实现自动重载验证码功能,如用户点击“刷新”按钮时重新生成验证码。