问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

jsp/ajax/servlet验证码

发布网友 发布时间:2022-04-23 22:41

我来回答

2个回答

热心网友 时间:2023-07-29 23:04

第一个问题:验证码图片用JSP或Servlet都行。
第二个问题:可能是缓存的问题。设置不缓存就OK。如果还不行那么访问验码的时候加一个随机数的参数,提示服务器是不同的请求。如果还不行欢迎交流~
下面是产生验证码JSP代码:
<%@ page contentType="image/jpeg" language="java" import="java.util.*,java.awt.*,java.awt.image.*,javax.imageio.*" pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%!
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 = 55,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(getRandColor(150,200));
for(int i=0; i< 155; i++){
int x = random.nextInt(width);
int y = random.nextInt(height);
int x1= random.nextInt(width);//random.nextInt(12);
int y1 = random.nextInt(height);//random.nextInt(12);
g.drawLine(x,y,x+x1,x+y1);
}
//随机产生认证码,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.setAttribute("authcode",sRand);
//图像生效
g.dispose();
//输出图像到页面
ImageIO.write(image,"JPEG",response.getOutputStream());
out.clear();
out = pageContext.pushBody();
%>
登陆页面代码:
<%@ page contentType="text/html; charset=utf-8" language="java"
import="java.sql.*;"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>首页</title>
</head>
<%
String incode = request.getParameter("code");
String rightcode = (String) session.getAttribute("authcode");
if (incode != null && rightcode != null) {
if (incode.equals(rightcode)) {
out.println("验证码输入正确");
} else
out.println("验证码输入不正确,请重新输入");
}
%>
<body>

<form action="index.jsp" method="post">
用户名:
<input type="text" name="u" />
<br />
密码:
<input type="password" name="p" />
<br />
验证码:
<input type="text" name="code" />
<br />
<img src="authcode.jsp" id="safecode" onclick="reloadcode();" />
<a href="" onclick="reloadcode();return false">看不清?换一张</a>
<br />

<input type="submit" value="登陆" />
</form>
<script type="text/javascript">
function reloadcode(){
var verify=document.getElementById('safecode');
verify.setAttribute('src','authcode.jsp?'+Math.random());
//这里必须加入随机数不然地址相同我发重新加载
}
</script>
</body>

</html>

热心网友 时间:2023-07-29 23:04

第一个问题:我用的也是别人的代码,在网上找的;是使用jquery实现的即时刷新,以及验证;
你要是要的话就QQ练习我了、、、935897194
第二个:每次更新验证码的时候就在session中重新保存验证码的值
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁告诉我一下,韩语中,“遵命”怎么说 想开个甜品店,不知道哪里可以学习呢 如何取消微信新号绑定的手机号? 翼支付-翼建钟情活动内容是什么? 怎么参加翼支付“翼建钟情”活动? 翼支付--翼建钟情立减10元-建行这次活动有具体名额限制吗? 西凤酒是哪里的 货车总重量不超过二十吨就不算超载吗? 自卸货车上装有二十多吨货已经有四五天了对货车能伤害哪个部位? 如何回复别人的"忙里偷闲"? 西安哪里卖货车西安全网营销 丁煜鑫给男孩起名字好吗? 网上的那些java源代码怎么用 全网营销好做吗,具体都包括什么? 本人姓丁,求一男孩名,名字要有意义,谢谢 西安高端全网系统化推广有哪些? 请问,这图片上的东西,用Java怎么做出来(不是js),用初学的水平做就行,不要做太难,要源代码 丁浩然的资料 全网营销成本高不高?西安新新人类做网站优化怎样? JAVA验证码生成问题 属兔,2011年4月27日,18点16分生的男孩想起名字叫丁浩然,帮忙测测这个名字好不好? Java有提供获取一个压缩文件的MD5验证码的API吗? 敬请高手看一下我儿子的名字怎么样:丁浩然,公历2012年10月31日,农历九月十七。 求一个Java语言编写的gif动态验证码 就是百度注册用户的那种 丁浩然生辰2013年阳历11月27出生名字好吗 求JAVA 程序破解该类验证码的源码??有没有大神~~~ 2017年6月19号小孩起名叫丁浩然行不 帮我测一下这个名字好吗?丁浩然,07年农历10月16的男娃 jsp技术的验证码源代码? 验证码源代码,jsp java源代码是给你一个身份证号,通过面板身份证号的输入,显示出该身份证主人的出生年月,省份,性别等资料 谁会做SEO排名的,全网的,可以不用到办公司,私人做 全国有多少叫丁浩然的 关于JAVAEE的一些问题?求大神!JavaEE 西安哪个网站建设好些?我们公司准备要建个网站,想让大家推荐一个。 我的统帅洗衣机打开电源水就一直流到处水口了,水不进桶,桶也不转,为什么? 求JAVA源代码 ~~~!!! 哪家全网网站seo优化营销推广公司靠谱? 丁浩轩和丁浩然那好 统帅洗衣机开机有显示,可以放水但水位满洗衣机不转 输入java源代码文件名,并输入自己的邮箱,提交前对Java文件名以及邮箱有效性进行检查,编码实现。 统帅洗衣机上水不转怎么回事 《全网网络传媒》优化网站软文代发有什么好处? 余丁浩然和余丁然,哪个名字更好? 如何用java程序实现加密的序列号 统帅tpb80-1586bs洗衣机脱水电机不转是什么原 全网搜索关键词排名营销优化推广怎么办? 统帅洗衣机TQs60-Z128启动了为什么没转? 网络优化的优缺点是什么? 统帅洗衣机TQG70-1208A,显示Err7,洗涤正常,甩水时转速不起,是什么问题?如何解决