`

验证码生成之JavaServlet-Edition

阅读更多

概述:验证码对于各大论坛的信息验证功能来说已经成了不可或缺的一部分,至于其作用,本人就不在这里赘述。近日,本人在自己也实现了一个JavaServlet版的验证码,现把其源代码贴出来,请各位不吝赐教。

实现机理:生成一串随机数,其中可以是固定值,可以是可变值,本人的随机数长度固定为4(可根据您自己的程序进行改变),等到随机字符串产生后,将此字符串打乱成字符,然后一个一个的把字符画到输出流里,其中每个字符的颜色即RGB值也是随机产生,在画面的同时,再产生若干条干扰线,以防止验证码被破解。然后把图象流输出到客户端。其中客户端的HTML代码利用img标签实现。

Servlet源代码:

java 代码
  1. public void doGet(HttpServletRequest request, HttpServletResponse response)   
  2.             throws ServletException, IOException {   
  3.         //设置响应格式   
  4.         response.setContentType("image/jpeg");   
  5.         //定义一个BufferedImage对象 其构造函数属性参照API   
  6.         BufferedImage image = new BufferedImage(80,20,BufferedImage.SCALE_SMOOTH);   
  7.         //根据上述对象产生一个Graphics2D上下文   
  8.         Graphics2D graphics = image.createGraphics();   
  9.         //将上下文颜色设置为白色   
  10.         graphics.setColor(Color.WHITE);   
  11.         graphics.fillRect(00,100,20);   
  12.         //设置书写字体   
  13.         graphics.setFont(new Font("Roman",Font.CENTER_BASELINE,22));   
  14.         //randomString方法见后面,负责产生由4个字符组成的字符串   
  15.         String randomStr=randomString(4);   
  16.         for(int i=0;i
  17.         //随机设置上下文颜色   
  18.         graphics.setColor(new Color(new Random().nextInt(250),new Random().nextInt(250),   
  19.                     new Random().nextInt(250)));   
  20.         //按字符把其画出来   
  21.         graphics.drawString(randomStr.substring(i,i+1),15*i,20);   
  22.         //产生干扰线   
  23.         graphics.drawLine(0,0,11);   
  24.         }   
  25.         //禁止缓冲代码,没有这段的话则不能进行更新显示,删除效果请自行测试   
  26.         response.setHeader("Prama""no-cache");   
  27.         response.setHeader("Coche-Control""no-cache");   
  28.         response.setDateHeader("Expires"0);      
  29.         //写入到客户端    
  30.         ImageIO.write(image,"jpeg",response.getOutputStream());   
  31.     }  

 

randomString方法源代码:

java 代码

     //number 产生有number个字符组成的字符串
  1. public String randomString(int number){ 
  2.     //字符串的内容组成  
  3.     String str="1234567890qwertyuioplkjhgfdsazxcvbnm";   
  4.     char[] chars=str.toCharArray();   
  5.     int length=chars.length;   
  6.     StringBuilder sb=new StringBuilder();   
  7.     Random random=new Random();   
  8.     //随机生成number个字符   
  9.     for(int i=0;i
  10.         //把单个字符转换成字符串然后追加到已经产生的字符串中
  11.         sb.append(new String(new Character(chars[random.nextInt(length)]).toString()));   
  12.     }   
  13.     return sb.toString();   
  14. }  
Jsp文件源代码:

jsp 代码
  1.       
  2.   <!---->    
  3.   <img src="<!---->/random"  id="PHOTO"       
  4.   onclick="document.getElementById('PHOTO').src='<!---->/random';return false;"/>      
  5.   <a href="<!---->/switch.do?prefix=/demo&page=/show.jsp">qqqa>      
  6.   <br>      
  7.   <input type="button" onclick="javascript:document.getElementById('photo').src='<!---->/random';return false;"     
  8.     value="看不清楚?">      
分享到:
评论
3 楼 mhqawjh 2007-09-28  
更正:randomString方法的完整for循环。
for(int i=0;i<number;i++){
sb.append(new String(new Character(chars[random.nextInt(length)]).toString()));
}
2 楼 yondy 2007-09-28  
for循环的条件不完整
不知道是不是javaeye程序的问题
1 楼 pikachu 2007-09-28  
吹毛求疵的一点:验证码怎么没有保存下来?

相关推荐

    Java EE--注册登录系统

    1. **Java EE**:Java EE(Java Platform, Enterprise Edition),是Java平台上针对企业级应用开发的框架,提供了包括Web服务、数据库连接、事务处理在内的多种服务。它允许开发者构建分布式、多层的Web应用程序。 ...

    验证码生成

    验证码生成技术是网络安全中一种常见的身份验证手段,用于防止自动化的机器人或恶意软件进行非法操作。在本程序中,我们关注的是基于JavaEE平台的验证码生成。JavaEE,即Java Platform, Enterprise Edition,是一个...

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

    JSP和Servlet是Java EE(Java Platform, Enterprise Edition)规范中的重要组件,被广泛应用于Web应用程序的开发中。验证码是一种常见的Web安全机制,用于区分用户是计算机还是人类,通常用于防止恶意程序自动注册、...

    JSP学习之Java Web中的安全控制实例详解

    JSP(JavaServer Pages)技术是Java EE(Java Platform, Enterprise Edition)的一个重要组成部分,它提供了在服务器端动态生成HTML、XML或其他格式文档的能力。使用JSP可以很容易地开发动态网页,但与此同时,安全...

    j2ee包 网站搭建类 jsp相关包 spring包 hibernate包

    10. **jcaptcha-all-1.0-RC6.jar**:JCaptcha是一个反垃圾信息的验证码生成库,用于防止自动化程序的非法操作。 这些库文件共同构成了一个基本的J2EE Web应用开发环境,可以用来构建包含Spring MVC、Hibernate ORM...

    (完整)javaweb开发要学习的所有技术和框架总结:,推荐文档.docx

    - **定义**:Java Standard Edition,是Java Web开发的基础。 - **主要内容**: - Java语法 - 数组与集合 - 面向对象编程 - 异常处理 - 多线程编程 - GUI编程 - 注解、泛型、反射及动态代理等高级特性 #### ...

    开题报告模板

    - **Servlet**: Servlet是Java EE的核心技术之一,用于处理客户端请求并生成响应。它提供了一个更灵活的方式来处理HTTP请求。 - **JSP (Java Server Pages)**: JSP是一种用来创建动态网页的技术。它可以将HTML、CSS...

    JAVA EE仓库管理系统

    JAVA EE(Java Platform, Enterprise Edition),以前称为J2EE,是Java平台的企业版,专为构建分布式企业级应用程序而设计。它提供了一整套服务和API,包括Web服务、事务处理、数据库连接、安全性以及面向服务的架构...

    mvc模式开发的健康管理系统

    本项目“mvc模式开发的健康管理系统”是一个学习实践JEEE(Java Enterprise Edition)时创建的实例,它包含了文件上传下载、验证码生成、Java脚本执行以及用户管理功能。虽然存在一些缺陷,但这个项目对于初学者理解...

    基于Java EE房产中介管理系统的开发与实现

    Java EE,全称Java Platform, Enterprise Edition,是Java平台为企业级应用设计的标准。它提供了丰富的API和服务,用于构建分布式、多层的Web应用程序,适用于复杂的业务逻辑处理和数据管理。在这个“基于Java EE...

    java ee电子商城系统课程设计.docx

    Java EE电子商城系统课程设计是基于Java企业版(Java Enterprise Edition)技术开发的一款在线购物平台。这个项目旨在让学生深入理解并实践Web应用的开发流程,包括需求分析、系统设计、编码实现以及性能优化等关键...

    基于JAVA WEB的医院预约挂号系统(源码+数据库).zip

    Java EE(Java Platform, Enterprise Edition)是Java在企业级应用开发中的框架,它提供了一系列的服务和组件,如Servlet、JSP、EJB等,用于构建分布式、多层的Web应用程序。 在系统实现中,Servlet扮演了服务器端...

    java epai 电子商务网站

    J2EE(Java 2 Platform, Enterprise Edition)是Java平台上用于开发和部署多层分布式企业应用的框架。它提供了一系列的API和服务,如Servlet、JSP、JavaServer Faces (JSF)、EJB(Enterprise JavaBeans)等,支持...

    java的内容

    Java的内容主要集中在Java 2 Platform, Enterprise Edition (J2EE)上,这是一个由Sun Microsystems(现已被Oracle收购)开发的企业级应用平台,用于构建和部署分布式、多层的Web应用程序。J2EE提供了多种服务、API和...

    javaEE注册登录系统

    JavaEE(Java Platform, Enterprise Edition)是Java平台的一个版本,专为开发企业级应用程序而设计。它提供了一个标准的框架和服务,包括Servlet、JSP、EJB等组件,用于构建分布式、多层的Web应用。 2. **注册与...

    J2EE个人博客(代码及论文).rar

    J2EE(Java 2 Platform, Enterprise Edition)是一个用于构建企业级应用的开放标准框架,它支持多层架构,包含了一系列的组件和服务,如Servlet、JSP、EJB等,为开发人员提供了强大的后端开发能力。 1. **项目结构...

    bs网上报名毕业设计

    它提供了诸如Java EE(Enterprise Edition)这样的企业级开发环境,包含了如JDBC(Java Database Connectivity)用于数据库操作,EJB(Enterprise JavaBeans)用于组件化开发,以及Spring、Hibernate等流行框架,...

    视频网站(一个很不错的自学项目)

    J2EE,全称为Java 2 Platform, Enterprise Edition,是Java开发企业级应用的标准框架,具有高度可扩展性和安全性。这个项目的核心是利用MyEclipse作为开发工具,以及MySQL作为后台数据库系统。 MyEclipse是一款强大...

    完善后的在线云笔记系统

    其次,javaee(Java Enterprise Edition)是Java平台上的企业级应用开发框架,它包含了众多服务器端组件和服务,如Servlet、JSP和EJB等。在云笔记系统中,javaee提供的这些组件用于处理用户的HTTP请求,实现业务逻辑...

    j2ee 登录小程序

    J2EE(Java 2 Platform, Enterprise Edition)是一个由Oracle公司维护的开源框架,用于构建企业级的分布式应用程序。它提供了丰富的服务、API和组件模型,以支持Web应用程序的开发,包括登录系统。在这个特定的...

Global site tag (gtag.js) - Google Analytics