手机版

Jsp servlet验证码工具类分享

时间:2021-08-31 来源:互联网 编辑:宝哥软件园 浏览:

昨晚在世纪乐知看到一位前辈写一个ajax servlet jsp验证,顿时心血来潮,在阅读前辈的代码下我亲手体验一下,做了一个验证码生成工具类,以供大家做个参考。

1、添加真实德国类生成验证码图像

package com.servlet导入Java。啊。颜色;导入Java。啊。字体;导入Java。啊。图形2d;导入Java。啊。图像。bufferedimage导入Java。io。OutputStream导入Java。乌提尔。随机的;导入javax。imageio。imageio/* * * * @作者胡彪*验证码生成器* 用到API * BufferedImage创建一个图像*图形2D绘制* fillRect(x,y,宽度,高度);背景*字体()字体* draw rect();边框*画线();线* drwaString:图像数据* ImageIO生成图像*/public class veriy deil {/* * * @ param输出保存验证图像的流* @返回验证码*/public static String new veriy code(OutputStream output){ int width=90;int height=40int codeCount=5;char[]codeSequence={'A ',' B ',' C ',' D ',' E ',' F ',' G ',' H ',' I ',' J ',' K ',' L ',' M ',' N ',' O ',' P ',' Q ',' R ',' S ',' T ',' U ',' V ',' W ',' X ',' Y ',' Z ',' 0 ',' 1 ',' 2 ',' 3 ',//创建图像对象,8位RGB缓冲尺寸=新缓冲尺寸(宽度、高度、缓冲尺寸. TYPE _ INT _ RGB);//通过骰子来绘制图像到图片中图形2d gra=缓冲。create graphics();//设置图片背景:白色颜色。白色);gra.fillRect(0,0,宽度,高度);//设置字体,字体大小根据图片高度决定gra.setFont(新字体(“固定系统”,字体。平原,高度-2));//设置边框:黑色,1cm gra.setColor(颜色。黑色);gra.drawRect(0,0,宽度-1,高度-1);//生成10条黑色干扰线颜色。黑色);Random ran=new Random();for(int I=0;i 70I){ int x=ran。nextint(255);int y=ran。nextint(255);int x1=ran。nextint(255);int y1=ran。nextint(255);gra.drawLine(x,y,x x1,y y1);//画直线} //生成验证码StringBuffer sb=new StringBuffer();int r=0,g=0,b=0;for(int I=0;我代码计数;I){字符串=字符串。(代码序列[ran。代码序列。长度)];//对每位验证码都生成不同的颜色,增加识别系统难度r=ran。nextint(255);g=ran。nextint(255);b=ran。nextint(255);gra.setColor(新颜色(r、g、b));格拉。拉丝(strAnD,I(1)* 13,高度-4);某人(somebody的简写)追加(StrAnD);}尝试{ ImageIO.write(缓冲,' jpeg ',输出);}捕获(例外e){ 0抛出新的RuntimeException(e);}返回某人(somebody的简写)ToString();} } 2、servlet使用验证码

受保护的void doPost(HttpServletRequest请求,HttpServletResponse resp)引发ServletException,IOException { //禁止图像缓存resp.setHeader('Pragma ','无缓存');resp.setHeader('缓存控制','无缓存');resp.setDateHeader('Expires ',0);resp。setcontenttype(' image/JPEG ');//生成验证码图像string veriyCode=veriycdeuils。新版本代码。getoutputstream());//将验证码保存到会议中http会话会话=请求。getSession();会话。setattribute(' validate code ',veriy code);} 3、JSP页面使用验证码

/head脚本类型='text/javascript '函数createCode() { var t=new Date().getTime();//防止页面缓存,使用时间搓var srcImg=文档。getelementbyid(' SRCIMg ');srcimg。src=' http :/IMgVeifyWeB/vity。做什么?t;}/脚本正文h1 $ {请求范围。code }/h1 img id=' SRCIMg ' SRC=' http : c : URL值='/vity。do '/c :网址'/#这里使用直接让图片访问servlet,通过反应响应一个图像流a href=' # # ' rel='外部no follow ' id=' CodeID ' onclick=' create code()'换一张/a表单操作='c:url值='/hello.do'/c:url '方法='post '输入类型=“文本”名称='codeVify'/输入类型='提交'值='提交//表单/正文4、校验验证码

受保护的void doPost(HttpServletrequest请求,HttpServletResponse resp)引发ServletException,IOException { HttpSession session=req。getSession();对象验证代码=会话。GetAttribute('验证代码');系统。出去。println(验证代码);字符串codeVify=req。getparameter(' CodeVify ');if(CodeVify==null | | CodeVify。equals('){ req。setAttribute(' code ','验证证不能为空');请求。getrequestdispatcher('/index。JSP ').转发(请求、响应);返回;}else if(!validateCode.toString().equalsIgnoreCase(CodeVify)){ req。setAttribute('代码','验证证错误');请求。getrequestdispatcher('/index。JSP ').转发(请求、响应);返回;} System.out.println('下面开始做其他业务操作.');} 校验图如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:Jsp servlet验证码工具类分享是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。