`

验证码的实现

    博客分类:
  • java
 
阅读更多
<script type="text/javascript" language="javascript"> 
  function changeImg(){ 
   var a=document.getElementById("mySpan"); 
   a.innerHTML='<img align="middle" src="ImageServlet"/> '; //会复盖“mySpan”位置 
  } 
</script> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> 
  <title>验证码</title> 
</head> 
<body> 
  <span id="mySpan"><img align="middle" src="ImageServlet" /></span>  
  <a  href="#" onclick="changeImg();">看不清</a> 
</body> 
</html> 

 

public class ImageServlet extends HttpServlet { 
private static final long serialVersionUID = 1L; 
public void doGet(HttpServletRequest request, HttpServletResponse response) 
   throws ServletException, IOException { 
            doPost(request, response); 
} 
public void doPost(HttpServletRequest request, HttpServletResponse response) 
   throws ServletException, IOException { 
  int width=150;//验证码图片宽度 
  int height=60;//验证码图片高度 
  BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_3BYTE_BGR); 
  Graphics g=image.getGraphics(); 
  Random random=new Random();//创建一个随机类 
  g.setColor(getRandColor(200,250));//背景颜色要偏淡 
  g.fillRect(0, 0, width, height);//画背景 
  g.setColor(getRandColor(0,255));//边框颜色 
        g.drawRect(0, 0, width-1, height-1);//画边框 
  g.setColor(getRandColor(160,200));// 随机产生5条干扰线,使图象中的认证码不易被其它程序探测到 
  for(int i=0;i<8;i++){ 
   int x=random.nextInt(width); 
   int y=random.nextInt(height); 
   int x1=random.nextInt(width); 
   int y1=random.nextInt(height); 
   g.drawLine(x, y, x1, y1); 
  } 
  g.setColor(getRandColor(160,200));// 随机产生100点,使图象中的认证码不易被其它程序探测到 
  for(int i=0;i<100;i++){ 
   int x=random.nextInt(width); 
   int y=random.nextInt(height); 
   g.drawLine(x, y, x, y); 
  } 
        Font font = new Font("Times New Roman", Font.ITALIC,38);  // 创建字体,字体的大小应该根据图片的高度来定。 
        g.setFont(font);//设置字体 
        int length = 6;  // 设置默认生成4个验证码 
  String s="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; // 设置备选验证码:包括"a-z"和数字"0-9" 
  String sRand=""; 
     
        // 用随机产生的颜色将验证码绘制到图像中。 
        // 生成随机颜色(因为是做前景,所以偏深)   
        //调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 
        g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));   
  for(int i=0;i<length;i++){ 
   String ch=String .valueOf(s.charAt(random.nextInt(s.length()))); 
   sRand+=ch; 
   g.drawString(ch, 22*i+12, (random.nextInt(5)-2)*i+40); 
  } 
  //将生成的字符串存储在session中 
  HttpSession session=request.getSession();   
  session.setAttribute("checkCode", sRand); 
  g.dispose();//图像生效 
  //禁止图像缓存 
  response.setHeader("Pragma", "No-cache"); 
  response.setHeader("Cache-Control", "no-cache"); 
  response.setDateHeader("Expires", 0);   
  response.setContentType("image/jpeg"); 
  //创建二进制的输出流 
  ServletOutputStream sos=response.getOutputStream(); 
        // 将图像输出到Servlet输出流中。 
        ImageIO.write(image, "jpeg", sos); 
        sos.flush(); 
        sos.close(); 
} 

public Color getRandColor(int lower,int upper){ 
  Random random = new Random(); 
  if(upper>255) 
   upper=255; 
  if(upper<1) 
   upper=1; 
  if(lower<1) 
   lower=1; 
  if(lower>255) 
   lower=255; 
  int r=lower+random.nextInt(upper-lower); 
  int g=lower+random.nextInt(upper-lower); 
  int b=lower+random.nextInt(upper-lower); 
  return new Color(r,g,b); 
} 
} 

 

 

	<servlet> 
    <servlet-name>ImageServlet</servlet-name> 
    <servlet-class>chenlh.ImageServlet</servlet-class> 
  </servlet> 
   <servlet-mapping> 
    <servlet-name>ImageServlet</servlet-name> 
    <url-pattern>/ImageServlet</url-pattern> 
  </servlet-mapping>

 

 

这代码实现的是 验证码 ...........            

分享到:
评论

相关推荐

    详细介绍Java阿里云的短信验证码实现

    Java阿里云短信验证码实现 Java阿里云短信验证码实现是指通过阿里云短信服务平台发送短信验证码的实现,以下是该实现的详细介绍。 登录阿里云开放平台 在实现Java阿里云短信验证码之前,需要首先登录阿里云开放...

    中文及字母数字验证码实现

    在“中文及字母数字验证码实现”中,系统会从预设的汉字库和字母数字集合中随机抽取一定数量的字符。为了增加破解难度,这些字符可以包含大小写字母、数字以及中文字符。 2. **乱序排列**:抽取的字符会被随机排列...

    javaWeb使用验证码实现简单登录

    JavaWeb使用验证码实现简单登录 在JavaWeb开发中,验证码是一种常用的安全机制,用于防止机器人和恶意攻击。下面将详细介绍如何使用验证码实现简单登录功能。 验证码的原理 验证码的原理是基于HTTP协议的请求响应...

    jsp验证码实现源代码

    jsp验证码实现源代码2008年05月06日 星期二 10:06在开发中验证码是比较常用到有效防止这种问题对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试的方式。

    动态滑动后端验证码实现

    动态滑动后端验证码是一种常见的安全验证...总之,动态滑动验证码的实现涉及服务器端的图片处理和验证逻辑,以及前端的图片显示和用户交互。它在保障网站安全的同时,也要求开发者在用户体验和安全防护之间找到平衡。

    STRUTS2验证码实现

    struts2图形验证码实现,两个实现类,和你一个action类

    beego框架图形验证码实现

    【beego框架图形验证码实现】是使用Go语言开发的一个高效且功能丰富的图形验证码库,它为Web应用提供了安全的验证码生成服务。这个库的核心目的是为了防止自动化程序(如机器人)进行非法操作,如批量注册、恶意登录...

    javaweb验证码实现demo

    总的来说,“javaweb验证码实现demo”涵盖了从生成随机字符串到绘制图像,再到验证用户输入的整个过程,是学习和理解Java Web验证码实现的一个实用示例。通过分析和实践这个demo,开发者可以更好地理解和掌握验证码...

    Java验证码实现源码

    在提供的压缩包文件"Java验证码实现"中,可能包含了实现以上步骤的Java源代码文件,包括主类、图像处理类和可能的配置文件。通过学习和理解这些代码,你可以进一步掌握Java验证码的实现细节,并将其应用到自己的项目...

    基于struts1.x的验证码实现

    总结来说,基于Struts1.x的验证码实现是Web开发中的重要环节,它涉及到服务器端的生成、存储、验证,以及客户端的显示和用户交互。通过合理的验证码设计和实现,可以显著提高Web应用程序的安全性,保护用户的账户不...

    JAVA和HTML5实现的多种验证码实现

    在学习这些验证码实现时,你可以通过查看压缩包中的"validateCode"源码文件来深入了解每个验证码的具体实现细节。同时,"截图"可能包含各个验证码的示例图像,帮助理解其外观和工作原理。此外,"关注科帮网获取更多...

    验证码实现的小demo

    在这个"验证码实现的小demo"中,我们将探讨验证码的基本概念、实现原理以及常见类型。 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”的缩写,即全自动区分...

    Php各种验证码实现

    以下是一个简单的GD库验证码实现步骤: 1. 生成随机字符串:使用`rand()`或`mt_rand()`函数生成一定长度的随机字符串。 2. 创建图像:使用`imagecreatetruecolor()`函数创建一个新的图像资源。 3. 设置背景:使用`...

    【ASP.NET编程知识】ASP.NET验证码实现(附源码).docx

    "ASP.NET 验证码实现详解" ASP.NET 验证码实现是 ASP.NET 编程中的一种常见技术,用于生成验证码图片,以防止恶意攻击和自动注册。下面将详细介绍 ASP.NET 验证码实现的知识点: 一、验证码生成 在 ASP.NET 中,...

    基于Python的团队激励与沟通验证码实现设计源码

    本资源提供了一套基于Python的团队激励与沟通验证码实现的设计源码,包含65个文件,其中包括27个Python字节码文件,16个Python源代码文件,以及6个HTML页面文件。此外,还包括4个PNG图片文件,3个字体文件,以及3个...

    验证码实现(随机背景色及字体颜色,带扰乱线条)

    在这个“验证码实现(随机背景色及字体颜色,带扰乱线条)”的项目中,我们将探讨如何创建一个具有随机背景色、字体颜色以及扰乱线条的图像验证码。 首先,`CreatImage.java`是生成验证码图像的核心类。在这个类中...

    前端验证码实现.zip

    在前端开发中,验证码是一种常见的安全机制,用于防止自动化脚本或机器人进行恶意操作,比如防止刷票、垃圾...这个项目“前端验证码实现.zip”将详细展示这些步骤和实现细节,帮助开发者深入理解前端验证码的实现过程。

    红马版验证码实现(中文+变形+噪点)asp.net+C#

    在“红马版验证码实现(中文+变形+噪点)asp.net+C#”中,我们将探讨如何使用ASP.NET和C#编程语言创建一个具有中文字符、形状变形和随机噪点的复杂验证码系统。 首先,验证码的核心在于生成随机但可读的字符串。在...

    vc+.net验证码实现

    vc++验证码实现,运用vs2010开发工具

Global site tag (gtag.js) - Google Analytics