手机版

jsp Servlet编程实现验证码的方法

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

本文实例讲述了jsp Servlet编程实现验证码的方法。分享给大家供大家参考,具体如下:

这里用到两个类,一个用于验证码实现,一个为后台小型应用程序验证输入是否正确:

CodeUtil.java验证码具体实现:

包跑龙套导入Java。啊。颜色;导入Java。啊。字体;导入Java。啊。图形;导入Java。啊。图像。bufferedimage导入Java。io。ioexception导入Java。io。OutputStream导入Java。io。版画作家;导入Java。乌提尔。随机的;导入javax。imageio。imageio导入javax。servlet。servletexception导入javax。servlet。http。HttpServlet导入javax。servlet。http。HttpServletrequest导入javax。servlet。http。HttpServletResponse导入javax。servlet。http。HttpSession导入javax。servlet。JSP。页面上下文;导入javax。servlet。JSP。塔格文本。正文内容;导入com。星期日图像。编解码器。JPEG。jpegcodec导入com。星期日图像。编解码器。JPEG。jpegimagedecoder导入com。星期日图像。编解码器。JPEG。jpegimageencoder公共类CodeUtil扩展了httpersvlet { public void service(httpersvletrequest请求,HttpServletResponse响应)引发ServletException,IOException {//system。出去。println('哈哈哈');回应。setcontenttype(' image/JPEG ');//设置页面不缓存response.setHeader('Pragma ','无缓存');response.setHeader('缓存控制','无缓存');回应。setdateheader(' Expires ',0);//在内存中创建图像int width=90int height=35BufferedImage图像=新的BufferedImage(宽度、高度、BufferedImage .TYPE _ INT _ RGB);//获取图形上下文图形g=图像。getgraphics();//随机类Random Random=new Random();//设定背景g.setColor(getRandColor(200,250));g.fillRect(0,0,宽度,高度);//设定字体g.setFont(新字体(《新罗马时代》,字体。平原,30);//随机产生干扰线g.setColor(getRandColor(160,200));for(int I=0;i 100i ) { int x=random.nextInt(宽度);int y=random.nextInt(高度);int XL=随机。nextint(12);int yl=随机。nextint(12);g.drawLine(x,y,x xl,y yl);} //随机产生四位验证码字符串[]代码={'0 ',' 1 ',' 2 ',' 3 ',' 4 ',' 5 ',' 6 ',' 7 ',' 8 ',' 9 ',' A ',' B ',' C ',' D ',' E ',' F ',' G ',' H ',' M ',' N ',' O ',' Q ',' S ',' T ',' U ',' V ',' W ',' X ',' Y ',' Z ',' A ',' B ',' C ',' D ',' E '字符串代码=' ';for(int I=0;i4;I){ String str=codes[随机。Nextint(代码。长度)];代码=str/将认证码显示到图象中g . setcolor(新颜色(50个随机。nextint(110),20 random.nextInt(110),30 random。nextint(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成g。拉绳(str,18 * i 13,27);//文字间距*i距离左边距,上边距} HttpSession会话=请求。getSession();//将认证码存入SESSION SESSION。SetAttribute(' code ',code);//图象生效g .处置();//输出图象到页面ImageIO.write(图像,' JPEG ',响应。getoutputstream());//加上下面代码,运行时才不会出现已经调用了Java。朗。illegalstatexception : getOutputStream()..等异常response.getOutputStream().flush();response.getOutputStream().close();回应。flush buffer();} //获取随机颜色私有Color getRandColor(int fc,int BC){ Random Random=new Random();if(fc 255)fc=255;如果(公元前255年)公元前=255年;int r=fc随机。nextint(BC-fc);int g=fc随机。nextint(BC-fc);int b=fc随机。nextint(BC-fc);返回新颜色(r、g、b);} } CheckCodeUtil.java-用户输入验证功能

包跑龙套导入Java。io。ioexception导入Java。io。版画作家;导入javax。servlet。servletexception导入javax。servlet。http。HttpServlet导入javax。servlet。http。HttpServletrequest导入javax。servlet。http。HttpServletResponse导入javax。servlet。http。HttpSession公共类CheckCodeUtil扩展了httpersvlet { public void service(httpersvletrequest请求,HttpServletResponse响应)引发ServletException,IOException { request。setcharacter encoding(' utf-8 ');回应。setcontenttype(' text/html;charset=utf-8 ');PrintWriter out=响应。getwriter();//从会议获取验证码http会话会话=请求。getSession();字符串代码=session.getAttribute('代码').toString();System.out.println(代码);//获取用户输入验证码字符串输入=request.getParameter('代码');System.out.println(输入);if(code.equalsIgnoreCase(输入)){ //转发数据request.setAttribute('result ',' true ');请求。get request dispatcher(' test/regist。JSP ').转发(请求、响应);//响应。发送重定向(请求。getcontextpath()'/regist/regist。JSP’);} else { request。setattribute(' result ',' false ');请求。get request dispatcher(' test/regist。JSP ').转发(请求、响应);} } } 测试页面效果:

测试页面代码:

"%@"页面会话="真"页面编码="utf-8 "内容类型="文本/html ";charset=utf-8'%!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN ' ' http://www .w3。org/TR/HTML 4/松散。DTD ' HTML头元http-equiv=' Content-Type ' Content=' text/HTML;charset=UTF-8 '标题在此插入标题/title脚本函数showResult1(){ alert('输入正确');}函数showResult2(){ alert('输入错误');}/script/head %响应。setcontenttype(' text/html;charset=utf-8 ');请求。setcharacter encoding(' utf-8 ');字符串路径=请求。getcontextpath();if(请求。GetAttribute(' result ')!=null){ 0字符串结果=request.getAttribute(“结果”).toString();out.print(结果);if(结果。equals(' true '){ out。打印(' true ');出去。print(' scriptshowresult 1();脚本');} else { out。print(' scriptshowresult 2();脚本');} } % body br验证码演示表单操作=' %=路径“%/checkCodeUtil”方法='post '输入类型=' text ' size=' 10 ' name=' code '/img src=' http :%=路径%/Codeutil ' id=' img '/a href=' JavaScript :onclick='文档getElementById('img ').src=' %=路径%/codeUtil?新日期()。getTime();'看不清,换一个/a输入类型='提交'值='提交/表单/正文/html希望本文所述对大家jsp程序设计有所帮助。

版权声明:jsp Servlet编程实现验证码的方法是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。