`
kingsui
  • 浏览: 192686 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java web验证码生成总结(包括servlet、jsp)

    博客分类:
  • Java
阅读更多

一、使用纯Servlet实现验证码.

(1)在web.xml配置:

<servlet>      
    <servlet-name>image</servlet-name>      
    <servlet-class>org.test.web.AuthImage</servlet-class>      
</servlet>      
     
<servlet-mapping>      
    <servlet-name>image</servlet-name>      
 <url-pattern>/authImage</url-pattern>      
</servlet-mapping> 


 

(2)servlet源码:

public class AuthImage extends HttpServlet      
{      
     
    private static final String CONTENT_TYPE = "text/html; charset=gb2312";      
    //设置字母的大小,大小      
    private Font mFont = new Font("Times New Roman", Font.PLAIN, 17);      
    public void init() throws ServletException      
    {      
        super.init();      
    }      
    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);      
    }      
     
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException      
    {      
        response.setHeader("Pragma","No-cache");      
        response.setHeader("Cache-Control","no-cache");      
        response.setDateHeader("Expires", 0);      
        //表明生成的响应是图片      
        response.setContentType("image/jpeg");      
              
        int width=100, height=18;      
        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(1, 1, width-1, height-1);      
        g.setColor(new Color(102,102,102));      
        g.drawRect(0, 0, width-1, height-1);      
        g.setFont(mFont);      
     
        g.setColor(getRandColor(160,200));      
     
        //画随机线      
        for (int i=0;i<155;i++)      
        {      
            int x = random.nextInt(width - 1);      
            int y = random.nextInt(height - 1);      
            int xl = random.nextInt(6) + 1;      
            int yl = random.nextInt(12) + 1;      
            g.drawLine(x,y,x + xl,y + yl);      
        }      
     
        //从另一方向画随机线      
        for (int i = 0;i < 70;i++)      
        {      
            int x = random.nextInt(width - 1);      
            int y = random.nextInt(height - 1);      
            int xl = random.nextInt(12) + 1;      
            int yl = random.nextInt(6) + 1;      
            g.drawLine(x,y,x - xl,y - yl);      
        }      
     
        //生成随机数,并将随机数字转换为字母      
        String sRand="";      
        for (int i=0;i<6;i++)      
        {      
            int itmp = random.nextInt(26) + 65;      
            char ctmp = (char)itmp;      
            sRand += String.valueOf(ctmp);      
            g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));      
            g.drawString(String.valueOf(ctmp),15*i+10,16);      
        }      
     
        HttpSession session = request.getSession(true);      
        session.setAttribute("rand",sRand);      
        g.dispose();      
        ImageIO.write(image, "JPEG", response.getOutputStream());      
    }      
    public void destroy()      
    {      
    }      
}    

(3)页面显示:

<img src="authImage"/>

 二、使用纯jsp实现验证码

<%@ page language="java" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*"    
     contentType="image/jpeg" pageEncoding="UTF-8"%>   
  
  
<%  //设置页面不缓存   
   response.setHeader("Pragma","No-cache");   
   response.setHeader("Cahce-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(new Color(160,200,100));   
   g.fillRect(0,0,width,height);   
   //设置字体   
   g.setFont(new Font("Times New Roman",Font.PLAIN,18));   
   //随机产生50条干扰线,使图形中的验证码不易被其他的程序探测到   
    g.setColor(new Color(160,200,200));   
   for(int i=0;i<50;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,x+x1,y+y1);   
   }   
   //随机产生验证码(6位数字)   
   String sRand="";   
   for(int i=0;i<6;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.setAttribute("rand",sRand);  //////将产生的验证码存储到sesson中   
   g.dispose();   
   ImageIO.write(image,"JPEG",response.getOutputStream());   
   out.clear(); //***********   
   out=pageContext.pushBody();//**********   
 %> 

 

 

分享到:
评论

相关推荐

    java 实现验证码(servlet+jsp)

    在Java Web开发中,我们可以使用Servlet和JSP来实现一个简单的图形验证码。以下将详细介绍如何利用这两个技术进行验证码的实现。 首先,理解验证码的基本原理:验证码是一种通过图像显示随机字符或数字的方式,用户...

    JAVA Web留言板 (JSP SERVLET验证码)

    综上所述,"JAVA Web留言板 (JSP SERVLET验证码)"项目涵盖了JAVA Web开发的核心技术,包括前后端交互、数据处理、用户验证以及安全性实践等多个方面,是学习和掌握JAVA Web开发的一个典型实例。通过实践这个项目,...

    java web 登录验证码生成类

    生成验证码图片 java类中获得验证码的方法: session.getAttribute("checkcode"); jsp页面中显示图片的方式: ${pageContext.request.contextPath}/checkcode.jsp"/&gt; 另外在web.xml中配置验证码类的加载: ...

    JSP+servlet验证码登陆

    在这个例子中,JSP页面可能包含一个`&lt;img&gt;`标签,其`src`属性指向一个Servlet,该Servlet负责生成验证码的图像并将其作为HTTP响应的一部分返回给浏览器。 3. **控制器(Controller)**: 用户输入验证码后,会提交...

    java 生成动态gif 验证码

    在Java开发中,生成动态GIF验证码是一种常见的安全机制,用于防止自动机器人...通过以上步骤,你就可以在Java Web应用中实现一个生成动态GIF验证码的功能。这不仅增强了系统的安全性,也为用户提供了良好的交互体验。

    随机验证码(jsp和servlet两种方式),可刷新

    综上所述,这个项目展示了如何在Java Web环境中利用Servlet和JSP来创建一个具有刷新功能的随机验证码系统。Servlet负责生成和验证验证码,而JSP作为用户界面,提供了用户交互的可能性。这个系统对于理解Java Web开发...

    java web写的验证码生成和验证

    用java写的自动生成验证码图片,和验证,用的servlet技术

    使用Servlet生成图片验证码

    在这里,我们需要配置Servlet的映射路径,比如 `&lt;servlet-mapping&gt;` 和 `&lt;servlet&gt;` 标签,使得用户可以通过特定URL访问到验证码生成的Servlet。 最后,`shown.java`可能是Servlet的源代码,其中包含了验证码的生成...

    JSP中利用Servlet生成验证码图片

    本文将详细介绍如何在Java Server Pages (JSP) 和 Servlet 技术的基础上,实现一个简单而实用的验证码图片生成工具。 #### 一、验证码的基本概念 验证码(CAPTCHA)是一种区分计算机和人类的方法,常用于验证用户...

    servlet生成验证码

    ### 二、验证码生成原理 验证码通常由随机字符组成,这些字符可以是数字、字母或特殊符号,有时还会加入背景噪声或扭曲效果以增加识别难度。在本例中,验证码是通过以下步骤生成的: 1. **定义字符集**:如`...

    Servlet生成图片验证码

    Servlet是Java Web开发中的一...总之,Servlet生成图片验证码是一种常见的Web安全实践,通过结合Java的图形库和HTTP交互,可以实现高效且安全的用户验证机制。在设计和实现时,应充分考虑用户体验和安全性之间的平衡。

    java完美的验证码生成

    本教程将详细讲解如何在Java环境下实现一个完美的、可定制的验证码生成系统。 首先,验证码的基本原理是生成一串随机字符串,并将其与图像结合,用户在看到图像后需输入对应的字符串,服务器端会验证用户输入的字符...

    jsp验证码生成以及刷新

    jsp 验证码生成和刷新是 Web 开发中非常重要的一部分。验证码的生成和刷新可以防止机器人攻击和恶意注册。下面我们将详细介绍 jsp 验证码生成和刷新的过程。 一、四位数据的验证图片生成 验证码生成是使用 servlet...

    java验证码及刷新

    本项目是一个基于Java实现的验证码生成及刷新功能,涉及到的技术主要包括JSP(JavaServer Pages)和Servlet。 首先,我们来看JSP。JSP是Java的一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,使得...

    java jsp 生成彩色验证码+验证功能代码,可直接运行,没有数据库

    在这个提供的压缩包中,包含的是一个基于Java实现的彩色验证码生成与验证的功能代码,适用于网页安全验证,防止自动机器人或恶意攻击。验证码通常由随机字符组成,目的是确保用户是人类而非自动化程序。 1. **彩色...

    jsp随机验证码生成测试

    本项目“jsp随机验证码生成测试”提供了一个基于Java Server Pages (JSP) 实现的验证码生成实例,旨在帮助开发者理解和实践如何在Web应用程序中集成验证码功能。 验证码的主要目的是验证用户是人而不是计算机程序。...

    Java 生成验证码示例

    总的来说,Java Web验证码生成示例提供了一个基础的验证码系统实现,对于初学者来说,这是一个了解验证码工作原理和实践Java Web开发的好例子。通过深入研究和修改,你可以根据实际需求增强验证码的安全性和用户体验...

    验证码生成jsp 代码

    压缩包中的"验证码生成"文件可能包含了实现上述步骤的JSP代码示例。通过查看和学习这个示例,你可以了解到如何在实际项目中生成和使用验证码。为了深入理解,你需要了解JSP语法、Java图像处理以及HTTP会话管理等相关...

    jsp servlet 验证码

    在Java Web开发领域中,经常利用JSP(JavaServer Pages)与Servlet技术来实现验证码功能。本文将详细解析一个具体的JSP Servlet验证码实现案例。 #### 二、核心概念 1. **Servlet**:Servlet是一种基于Java的技术...

    jsp,servlet,验证码,验证码点击更换

    在验证码系统中,Servlet可以生成随机验证码字符串,存储到服务器端,同时创建对应的图像文件供JSP展示。 验证码通常由一组随机字符组成,这些字符可能包括字母、数字、特殊符号等。在生成验证码时,我们可以通过...

Global site tag (gtag.js) - Google Analytics