JavaWeb中驗证码的实现.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JavaWeb中驗证码的实现

JavaWeb中验证码的实现在Web程序中,验证码是经常使用的技术之一。Web程序永远面临未知用户和未知程序的探测。为了防止恶意脚本的执行,验证码技术无疑是首选方案之一。本文将讨论如何在JSP和Servlet中使用验证码技术。验证码的产生思路很简单,在Servlet中随机产生验证码字符序列,并计入session中,JSP中以图片的形式进行显示。当用户在JSP表单中输入验证码并提交时,在相应的Servlet中验证是否与session中保存的验证码一致。下面通过代码,一次演示验证码产生和实现的验证的过程。验证码的产生我们需要创建一个名为ValcodeServlet的servlet并在其doGet()方法中完成验证码的产生。首先通过随机数的产生类Random随机产生一个4位的验证码,并将其存入session;然后使用BufferedImage和Graphics类把验证码转为图片,当然为了起到较好的效果,我们需要添加一些干扰线;最后使用ImageIO将图片输出。详细代码如下:protectedvoiddoGet(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException {// 告知浏览当作图片处理response.setContentType(image/jpeg);// 告诉浏览器不缓存response.setHeader(pragma, no-cache);response.setHeader(cache-control, no-cache);response.setHeader(expires, 0);// 产生由4位数字构成的验证码int length = 4;String valcode = ;Random rd = new Random();for(int i=0; ilength; i++)valcode+=rd.nextInt(10);// 把产生的验证码存入到Session中HttpSession session = request.getSession();session.setAttribute(valcode, valcode);// 产生图片int width = 80;int height = 25;BufferedImageimg = newBufferedImage(width, height,BufferedImage.TYPE_INT_RGB);// 获取一个GraphicsGraphics g = img.getGraphics();// 填充背景色g.setColor(Color.WHITE);g.fillRect(0, 0, width, height);// 填充干扰线50for(int i=0; i50; i++){g.setColor(new Color(rd.nextInt(100)+155,rd.nextInt(100)+155,rd.nextInt(100)+155));g.drawLine(rd.nextInt(width), rd.nextInt(height),rd.nextInt(width), rd.nextInt(height));}// 绘制边框g.setColor(Color.GRAY);g.drawRect(0, 0, width-1, height-1);// 绘制验证码Font[] fonts = {new Font(隶书,Font.BOLD,18),new Font(楷体,Font.BOLD,18),new Font(宋体,Font.BOLD,18),new Font(幼圆,Font.BOLD,18)};for(int i=0; ilength; i++){g.setColor(new Color(rd.nextInt(150),rd.nextInt(150),rd.nextInt(150)));g.setFont(fonts[rd.nextInt(fonts.length)]);g.drawString(valcode.charAt(i)+, width/valcode.length()*i+2, 18);}// 输出图像g.dispose();ImageIO.write(img, jpeg, response.getOutputStream());}上面的代码只是产生了一个常规的验证码,我们可以根据自己的需要对验证码的产生策略和干扰线进行调整。Servlet编写完毕,别忘了在web.xml中进行配置以便能在JSP中调用,其代码如下:servletdescription/descriptiondisplay-nameValcod

文档评论(0)

sd47f8cI + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档