`
- 浏览:
1150751 次
- 性别:
- 来自:
北京
-
动手实现随机验证码
首先,来写一个画验证码图片的Java类:
packagecom.XiongYi.validationCode;
importjava.awt.Color;
importjava.awt.Font;
importjava.awt.Graphics;
importjava.awt.image.BufferedImage;
importjava.io.IOException;
importjava.io.OutputStream;
importjava.util.Random;
importjavax.imageio.ImageIO;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassValidationCodeextendsHttpServlet...{
publicstaticStringgetValidationCodes(OutputStreamos)...{
charcodeTable[]=...{
'a','b','c','d','e','f','g','h','i','j','k','l',
'm','n','p','q','r','s','t','u','v','w','x','y','z',
'A','B','C','D','E','F','G','H','I','J','K','L',
'M','N','P','Q','R','S','T','U','V','W','X','Y','Z',
'1','2','3','4','5','6','7','8','9'
};//判断时大小写不区分,另外,没有使用'O'和'0',也是怕混淆的麻烦
BufferedImageimage=newBufferedImage(60,20,
BufferedImage.TYPE_INT_RGB);
//生成60×20的RGB图片
Graphicsgraphic=image.getGraphics();
//背景色
graphic.setColor(newColor(0xDCDCDC));
graphic.fillRect(0,0,60,20);
charcodes[]=newchar[4];
//随机产生验证码
for(inti=0;i<=3;i++)...{
codes[i]=codeTable[(int)(codeTable.length*Math.random())];
}
//把字画上去
graphic.setColor(Color.BLACK);
graphic.setFont(newFont("Arial",Font.BOLD,16));
for(inti=0;i<=3;i++)...{
graphic.drawChars(codes,i,1,2+15*i,15+i);
//把codes[i]画到坐标为[10+5*i,15+i]的地方去
}
//15个干扰点
Randomrand=newRandom();
for(inti=0;i<15;i++)
graphic.drawOval(rand.nextInt(60),rand.nextInt(20),1,1);
//释放此图形的上下文并释放它所使用的所有系统资源
graphic.dispose();
try...{
ImageIO.write(image,"JPEG",os);
}catch(IOExceptione)...{
e.printStackTrace();
}
returnnewString(codes,0,codes.length);
}
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException...{
doPost(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException...{
request.getSession().setAttribute("validationCodes",getValidationCodes(response.getOutputStream()));
}
}
然后,写一个Servlet将生成的图片写入页面:
packagecom.XiongYi.servlet;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.XiongYi.validationCode.ValidationCode;
publicclassValidationServletextendsHttpServlet...{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException...{
doPost(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException...{
Stringstr=ValidationCode.getValidationCodes(response.getOutputStream());
request.getSession().setAttribute("validationCodes",str);
}
}
接着,在login.jsp中加入如下表单:
<%...
Stringpath=request.getContextPath();
StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<formaction="<%=basePath+"servlet/LoginServlet"%>">
<imgsrc="<%=basePath+"servlet/ValidationServlet"%>"/>
<br>
<inputtype="text"name="codes"/>
<inputtype="submit"/>
</form>
再写进行后台判断的Servlet:
packagecom.XiongYi.servlet;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclassLoginServletextendsHttpServlet...{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException...{
doPost(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException...{
if(request.getSession().getAttribute("validationCodes").toString().toLowerCase()
.equals(request.getParameter("codes").toString().toLowerCase()))
response.getOutputStream().println("Right!");
else
response.getOutputStream().println("Wrong!");
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
JAVA实现随机图片验证码简单方法.rtf
随机验证码随机验证码随机验证码随机验证码随机验证码
Android自定义View介绍和学习 实现随机的验证码demo
验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行提交操作的同时需要将图片上的字符同时提交,如果提交的字符与服务器session保存的不同,则认为提交...本文介绍了使用servlet来实现随机验证码。
Qt实现验证码的随机生成
QT实现随机生成验证码
VB 如何实现随机图形验证码 VB 如何实现随机图形验证码
使用HTML5和JS实现随机数,注意:此代码仅供娱乐,真正的项目中创建验证码都 是使服务器端技术!!
Python中PIL模块实现的随机生成验证码图片用于网站登录验证.
使用JAVA语言,通过GUI实现随机验证码的显示,支持点击更换验证码,以及对输入的验证码进行验证。验证的结果有相应弹窗提醒
Vue实现随机验证码功能 本文实例为大家分享了Vue实现随机验证码功能的具体代码,供大家参考,具体内容如下 步骤1:创建一个名为identify.vue的子组件 <template> <div class="s-canvas"> ...
该资源为小编原创的使用Python生成随机验证码的源文件,可供学习制作python验证码的小伙伴们下载
看很多人都在找asp 验证码 asp 随机验证 我收集了四个非常优秀的ASP随机验证码,非常好用,分别为: Asp纯数字随机验证码程序 (5.98 kb) Asp数字及字母组合验证码程序(5.98 kb) Asp纯字母验证码程序.zip (5.98 kb ...
PHP语言编写的随机验证码的生成,比较简单,但可以使用
PHP随机验证码含有5种样式,包含中文验证码,英文验证码,数字验证码共5种样式
HTML实现,有随机生成的验证码+按钮+输入框
登陆页面出现的验证码,防止攻击,随机验证码,增加条线来增加识别难度
java生成的随机验证码
jsp随机验证码,是图片的jsp,只需加载到表单某个位置便可
用JSP生成随机数字验证码,数字验证码是图片形式的。通过点击按钮,可以实现对数字验证码的刷新。