




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 拼音线描美术课件
- 产后盆底功能康复治疗
- 联想集团员工激励管理实践分析
- (统编版)语文三年级上册口语交际:名字里的故事 课件
- 补肺汤解析与应用
- 护理心理案例分析与实践应用
- 大学生秋季传染病预防指南
- 饮食护理的种类
- 肺癌的护理查房
- 初中班主任年度个人工作总结模版
- 土建项目分包协议书
- 2025年中考道法答题技巧与模板构建专题08主观题答题技巧(观点概括类试)(学生版+解析)
- 1.1 细胞生活的环境 课件高二上学期生物人教版选择性必修1
- “教-学-评”一体化下初中英语写作教学评价措施
- 2025团员考试试题及答案
- 2025年全国防灾减灾日专题培训课件
- 2025-2030中国氯氧化铋行业市场发展趋势与前景展望战略研究报告
- 视频监控介绍课件
- 2025年软件测试工程师考试题及答案
- 血管内导管相关性血流感染预防与诊治指南(2025)解读课件
- 2025年高考数学考前最后一课
评论
0/150
提交评论