java验证码代码_第1页
java验证码代码_第2页
java验证码代码_第3页
java验证码代码_第4页
java验证码代码_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java 验证码代码(转)产生图片 servletimportjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics2D;importjava.awt.image.Bufferedlmage;importjava.util.Random;importjavax.imageio.ImagelO;importjavax.servlet.ServletException;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServlet;importja

2、vax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;/* Packagename:com.skcc.sample.actionFilename:VerifyCodeServlet.java* Author:AdministratorDate:2008-9-4Description:VerifyCodeServlet*/publicclassVerifyCodeServletextendsHttpServlet/*

3、/*验证码图片的宽度。*/privateintwidth=60;/*验证码图片的高度。*/privateintheight=20;/*验证码字符个数privatestaticfinallongserialVersionUID=1L;J*/private/*xx*/private/*intcodeCount=4;intxx=0;*字体高度*/privateintfontHeight/*codeY*/privateintcodeY/*codeSequence*/char codeSequenceABC,DEFG,HW,K,L,M,N:,O,P,Q,R,S,T,UX,Y,Z,0,1,2,3,4,5,

4、6,7IV89;/*初始化验证图片属性*/publicvoidinit()throwsServletException/从web.xml中获取初始信息宽度StringstrWidth=/高度StringstrHeight=/字符个数StringstrCodeCount=thisthis.getInitParameter(.getInitParameter(this.getInitParameter(widthheight/将配置的信息转换成数值tryif(strWidth!=null&strWidth.length()!=0)width=Integer.parseInt(strWidt

5、h);););codeCount);null&strCodeCount.length()!=0)parseInt(strCodeCount);)catch(NumberFormatExceptione)e.printStackTrace();xx=width/(codeCount+1);codeY=height-4;Graphics2Dgd=buffImg.createGraphics();/创建一个随机数生成器类/创建字体,字体的大小应该根据图片的高度来定。/设置字体。gd.setFont(font);)if(strHeight!=null&strHeight.length(

6、)!=0)height=Integer.parseInt(strHeight);Fontfont=newFont(Fixedsys,Font.PLAIN,fontHeight);)if(strCodeCount!=codeCount=Integer.fontHeightheight-2;/*paramparamreq*/throwsthrowsrespServletExceptionjava.io.IOExceptionprotectedresp)voidservice(HttpServletRequestreq,HttpServletResponsethrowsServletExceptio

7、n,java.io.IOException/定义图像 bufferBufferedImagebuffImg=BufferedImage.newBufferedImage(TYPE_INT_RGB);widthheightRandomrandom=newRandom();/将图像填充为白色gd.setColor(Color.gd.fillRect(0,0,WHITE);width,height);BLACK);width-1,height-1);/随机产生 160 条干扰线,使图象中的认证码不易被其它程序探测到。gd.setColor(Color.BLACK);for(inti=0;i160;i

8、+)intx=random.nextInt(width);inty=random.nextInt(height);intxl=random.nextInt(12);intyl=random.nextInt(12);gd.drawLine(x,y,x+xl,y+yl);)/randomCode 用于保存随机产生的验证码,以便用户登录后进行验证。StringBufferrandomCode=newStringBuffer();intred=0,green=0,blue=0;/随机产生 codeCount 数字的验证码。for(inti=0;icodeCount;i+)/得到随机产生的验证码数字。S

9、tringstrRand=String.valueOf(codeSequencerandom.nextInt(36);/产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同red=random.nextInt(255);green=random.nextInt(255);blue=random.nextInt(255);/用随机产生的颜色将验证码绘制到图像中。gd.setColor(newColor(red,green,blue);gd.drawString(strRand,(i+1)*xx,codeY);/将产生的四个随机数组合在一起。randomCode.append(str

10、Rand);)/将四位数字的验证码保存到 Session 中。HttpSessionsession=req.getSession();session.setAttribute(validateCode,randomCode.toString();/禁.止图像缓存。resp.setHeader(Pragma,no-cache);resp.setHeader(Cache-Control,no-cache);resp.setDateHeader(Expires,0);/画边框。gd.setColor(Color.gd.drawRect(0,0,/* ThedoGetmethodoftheservle

11、t.* Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.* paramrequest* therequestsendbytheclienttotheserver* paramresponse* theresponsesendbytheservertotheclient* throwsServletExceptionresp.setContentType(image/jpeg);/将图像输出到 Servlet 输出流中。ServletOutputStreamsos=resp.getOutputStream();ImageIO.

12、write(buffImg,jpeg,sos);sos.close();产生结果 servletimportjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;/*Packagename:com.skcc.sample.actionF

13、ilename:ResultServlet.javaAuthor:*AdministratorDate:2008-9-4Description:ResultServlet*/publicclassResultServletextendsHttpServlet/*/privatestaticfinallongserialVersionUID=1L;* ifanerroroccurred* throwslOException* ifanerroroccurred* /publicvoiddoGet(HttpServletRequestrequest,HttpServletResponserespo

14、nse)throwsServletException,IOExceptiondoPost(request,response);/* ThedoPostmethodoftheservlet.* Thismethodiscalledwhenaformhasitstagvaluemethodequalsto*post.* paramrequesttherequestsendbytheclienttotheserver* paramresponsetheresponsesendbytheservertotheclient* throwsServletExceptionifanerroroccurred

15、* throwslOException* ifanerroroccurred* /publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,lOExceptionresponse.setContentType(text/html;charset=utf-8);StringvalidateC=(String)request.getSession().getAttribute(validateCode);StringveryCode=request.getParamet

16、er(veryCode);PrintWriterout=response.getWriter();if(veryCode=null|.equals(veryCode)out.println(验证码为空);elseif(validateC.equals(veryCode)out.println(验证码正确);elseout.println(验证码错误);)js 文件functionchangeImg()varimgSrc=$(#imgObj);varsrc=imgSrc.attr(src);imgSrc.attr(src,chgUrl(src);)/时间戳/为了使每次生成图片不一致,即不让浏览器

17、读缓存,所以需要加上时间戳functionchgUrl(url)vartimestamp=(newDate().valueOf();url=url.substring(0,17);&)=0)?atamp=+timestamp;?timestamp=+timestamp;returnurl;functionisRightCode()varcode=$(#veryCode).attr(value);code=c=+code;$.ajax(type:POST,url:resultServlet,data:code,success:callback);functioncallback(data

18、)$(#info).html(data);页面 verifyCode.jspout.flush();out.close();if(url.indexOf(url=url+elseurl=url+%pagelanguage=javapageEncodingPUBLIC-/W3C/DTDHTML4.01Transitional/EN/TR/html4/loose.dtdmetahttp-equiv=Content-Typecontent=text/html;charset=UTF-8scriptscripttestverifycodesrc=js/verifyCode.jssrc=js/jquery.js/script/titleinput/换一张input=isRightCode()/最后记得配好 web.xmlservlet-nameservlet-nameservlet-classservlet-mappingservlet-nameurl-patte

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论