`

验证码的应用

    博客分类:
  • JSP
阅读更多
{1)验证码是什么?
  就是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。

(2)验证码的作用?
  验证码一般是防止有人利用机器人自动批量注册、对特定的注册用户用特定程序暴力破解方式进行不断的登陆、灌水。因为验证码是一个混合了数字或符号的图片,人眼看起来都费劲,机器识别起来就更困难。

(3)添加验证码的过程(struts中)
1)
将验证码的代码放于一个JSP文件(image.jsp)中.
2)
在验证码的JSP文件中,可以修改设置:
session.setAttribute("ccode",sRand);   -->修改要获取的session属性名
3)
在要进行验证的JSP中,添加如下:
验证码:<html:text property="checkcode"></html:text>
<img src="image.jsp"><br>

4)
在ACTION中:
 // 先判断验证码是否正确
  String ccode = (String) request.getSession().getAttribute("ccode");
  String checkcode = userForm.getCheckcode();
  if (!(checkcode.equals(ccode))) {
   ActionMessages errors = new ActionMessages();
   errors.add("checkcode", new ActionMessage("checkcode.error"));
   super.saveErrors(request, errors);
   return mapping.getInputForward();
  }


验证码代码:
<%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*" %> 
<%! 
Color getRandColor(int fc,int bc){//给定范围获得随机颜色 
                Random random = new Random(); 
                if(fc>255) fc=255; 
                if(bc>255) bc=255; 
                int r=fc+random.nextInt(bc-fc); 
                int g=fc+random.nextInt(bc-fc); 
                int b=fc+random.nextInt(bc-fc); 
                return new Color(r,g,b); 
                } 
%> 
<% 
//设置页面不缓存 
response.setHeader("Pragma","No-cache"); 
response.setHeader("Cache-Control","no-cache"); 
response.setDateHeader("Expires", 0); 

// 在内存中创建图象 
int width=60, height=20; 
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 

// 获取图形上下文 
Graphics g = image.getGraphics(); 

//生成随机类 
Random random = new Random(); 

// 设定背景色 
g.setColor(getRandColor(200,250)); 
g.fillRect(0, 0, width, height); 

//设定字体 
g.setFont(new Font("Times New Roman",Font.PLAIN,18)); 

//画边框 
//g.setColor(new Color()); 
//g.drawRect(0,0,width-1,height-1); 


// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到 
g.setColor(getRandColor(160,200)); 
for (int i=0;i<155;i++) 
{ 
  int x = random.nextInt(width); 
  int y = random.nextInt(height); 
                int xl = random.nextInt(12); 
                int yl = random.nextInt(12); 
  g.drawLine(x,y,x+xl,y+yl); 
} 

// 取随机产生的认证码(4位数字) 
//String rand = request.getParameter("rand"); 
//rand = rand.substring(0,rand.indexOf(".")); 
String sRand=""; 
for (int i=0;i<4;i++){ 
        String rand=String.valueOf(random.nextInt(10)); 
        sRand+=rand; 
        // 将认证码显示到图象中 
        g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成 
        g.drawString(rand,13*i+6,16); 
} 

// 将认证码存入SESSION 
session.setAttribute("ccode",sRand); 


// 图象生效 
g.dispose(); 

// 输出图象到页面 
ImageIO.write(image, "JPEG", response.getOutputStream()); 


%> 
分享到:
评论

相关推荐

    基于Struts技术的验证码应用

    某杂志论文-基于Struts技术的验证码应用

    google 很牛的Captcha---recaptcha验证码应用 轻松搞定网站验证码

    google 很牛的Captcha---recaptcha验证码应用 轻松搞定网站验证码 国外大多数网站都使用gg此验证码 很帅的~~ 提供语音识别

    计算机前端-核心编程day5-07验证码应用.avi

    计算机前端-核心编程day5-07验证码应用.avi

    Java Web中验证码的生成和应用!

    Java Web中验证码的生成和应用!

    专题课】JavaWeb短信验证码应用

    在本专题课程“JavaWeb短信验证码应用”中,我们将深入探讨如何在用户注册流程中集成短信验证码功能,以确保用户提交的手机号码真实有效,并减少数据库中的无效或垃圾信息。这个过程涉及到多个技术领域的知识,包括...

    PHP验证码的应用示例

    本篇文章将详细探讨PHP验证码的应用,包括其原理、实现方法以及一些实际案例。 验证码的基本原理是通过显示一个难以由计算机程序识别的图像,来区分人类用户和机器。通常这个图像包含一些随机字符或数字,用户需要...

    JAVA 验证码WEB应用

    下面我们将深入探讨这个“JAVA 验证码WEB应用”。 首先,验证码的生成过程涉及到几个关键技术点: 1. **随机字符串生成**:通常,验证码由4到6个随机字符组成,可以是字母、数字或者特殊字符。在Java中,我们可以...

    django-captchapy:django python的验证码应用程序

    django python的验证码应用程序 使用极其简单: 第一个控制台命令: pip install git+https://github.com/desenvolvendoweb/django-captchapy.git 第二个设置.py: INSTALLED_APPS = ( ... 'captchapy', ) 第...

    我的Django编写项目,包含验证码

    【Django验证码应用详解】 Django是一个用Python编写的高级Web框架,它鼓励快速开发和清洁、实用的设计。在这个项目中,"我的Django编写项目,包含验证码",我们可以看到开发者在构建网站时考虑到了安全性,通过...

    验证码可执行源码

    这是一个验证码的源码,很好用,建个jsp页面粘上去,效果就出来了

    Jsp-图片验证码及刷新

    在实际的图片验证码应用中,通常会生成一串随机的字母或数字,并使用扭曲、倾斜、噪声等技术增加机器识别的难度。同时,为了防止重复使用同一验证码,还需要提供一个机制来刷新图片。刷新图片主要是重新生成新的...

    基于winform实现的验证码

    在创建验证码应用时,开发者可能使用了以下WinForm组件和技术: 1. 图形绘制:验证码通常包含随机生成的字符或数字,这些元素需要在图形上下文中绘制。在WinForm中,可以使用Graphics类来绘制文本、线条和其他形状...

    基于python登录网站验证码的生成与识别系统(django)源码.zip

    近年来随着互联网应用技术的飞速发展,为了确保网站系统平台的安全性,各类网站相继推出了验证码应用技术,通过验证码的应用来帮助缓解暴力破解账户密码、垃圾邮件攻击以及在线虚假投票等安全问题,传统的验证码采用...

    WinForm验证码源码_0520.rar

    验证码应用可能需要处理用户输入为空、输入格式错误等情况。 11. **.NET Framework**:这个项目基于.NET Framework运行,它是微软提供的一个开发平台,包含了用于构建、部署和运行.NET应用程序的各种工具和库。 ...

    成功的验证码案例-----struts验证码demo

    在本案例中,“成功的验证码案例-----struts验证码demo”是一个基于Struts框架实现的简单易懂的验证码应用。Struts是Java EE平台上的一款开源MVC框架,它为构建Web应用程序提供了强大的结构支持。 首先,我们来理解...

    验证码程序

    使用java写的验证码应用程序,可以在页面上自动生成验证码,用于用户输入验证码认证

    javaweb 验证码实例

    本实例是一个基于Struts框架实现的验证码应用,旨在帮助开发者理解和实践验证码的生成与验证。 验证码的核心功能包括: 1. **生成随机图像验证码**:在服务器端,验证码通常通过生成随机字符串并将其转化为图像来...

    验证码使用案例

    在给定的文件中,我们可以看到涉及到验证码应用的几个关键组件: 1. **AdminServlet.java**:这是一个Java Servlet文件,通常用于处理HTTP请求。在验证码场景下,这个Servlet可能负责生成和验证验证码。当用户请求...

    jsp验证码

    利用JBuilder,开发者可以更方便地编写、调试和部署JSP验证码应用程序。 创建JSP验证码涉及到以下几个关键知识点: 1. **JSP基本结构**:JSP页面由HTML标记、脚本元素和指令组成。在验证码实现中,可能包含一个...

Global site tag (gtag.js) - Google Analytics