`
leiwuluan
  • 浏览: 703534 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

Web 开发实现验证码输入功能

阅读更多

首先建一个类生成一个验证码的图片代码如下

 

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics2D;

import java.awt.image.BufferedImage;

import java.io.IOException;

import java.io.OutputStream;

import java.util.Random;

 

import javax.imageio.ImageIO;

 

public class MakeSecurityPic {

       

       /**

        * 生成验证码的字符数字组合

        */

       private char[] mapTable = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',

                     'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',

                     'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8',

                     '9' };

 

       /**

        * 获取验证码图片

        * 

        * @param width

        *            图片的宽

        * @param height

        *            图片的高

        * @param os

        *            输出流

        * @return

        */

       public String getSecurityPic(Integer width, Integer height, OutputStream os) {

 

              if (width == 0)

                     width = 60;

              if (height == 0)

                     height = 20;

 

              BufferedImage image = new BufferedImage(width, height,

                            BufferedImage.TYPE_INT_RGB);

 

              //

              Graphics2D g = image.createGraphics();

 

              // 填充背景色

              g.setColor(Color.white);

              g.fillRect(0, 0, width, height);

 

              // 绘制边框

              g.setColor(Color.BLACK);

              g.drawRect(0, 0, width - 1, height - 1);

 

              // 验证码

              String security = "";

 

              // 随机生成验证码

              Random random = new Random();

              for (int i = 0; i < 4; i++) {

                     security += mapTable[random.nextInt(mapTable.length)];

              }

 

              // 绘制验证码

              g.setColor(Color.BLACK);

              g.setFont(new Font("MS Sans Serif", Font.PLAIN, 18));

 

              String temp = security.substring(0, 1);

              g.drawString(temp, 7, 15);

              temp = security.substring(1, 2);

              g.drawString(temp, 18, 17);

              temp = security.substring(2, 3);

              g.drawString(temp, 28, 18);

              temp = security.substring(3, 4);

              g.drawString(temp, 40, 17);

 

              // 绘制干扰点

              g.setColor(Color.BLACK);

              for (int i = 0; i < 20; i++) {

                     g.drawOval(random.nextInt(width), random.nextInt(height), 0, 0);

              }

              // 释放资源

              g.dispose();

 

              try {

                     // 输出图片到缓冲区

                     ImageIO.write(image, "JPG", os);

              } catch (IOException e) {

                     // TODO Auto-generated catch block

                     e.printStackTrace();

              }

              return security;

       }

}

 

 

 

再建一个servlet 类型为

 

response.setContentType("image/jpg");

是一个图片类型的。

代码如下:

package com.security;

 

import java.io.IOException;

import java.io.PrintWriter;

 

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public class MakeSecurityServlet extends HttpServlet {

 

 

       public void doGet(HttpServletRequest request, HttpServletResponse response)

                     throws ServletException, IOException {

              doPost(request,response);

       }

 

 

       public void doPost(HttpServletRequest request, HttpServletResponse response)

                     throws ServletException, IOException {

              

              response.setContentType("image/jpg");

              MakeSecurityPic msp = new MakeSecurityPic();

              String security = msp.getSecurityPic(0, 0, response.getOutputStream());

              

              request.getSession().setAttribute("security", security);

       }

 

}

 

 

显示到jsp页面上如下:

       security:<input type="text" name="security"/><img id="securityPic" src="servlet/MakeSecurityServlet"><a href="#" onClick="reloadSecurityPic()">看不清楚,换一个</a><br>

1
0
分享到:
评论

相关推荐

    【ASP.NET编程知识】Asp.net Web Api实现图片点击式图片验证码功能.docx

    在这个特定的案例中,我们将探讨如何利用ASP.NET Web API来实现一种特殊的验证码功能,即图片点击式的验证码。 验证码的主要目的是防止自动化程序(如机器人)进行恶意操作,通常要求用户完成一项简单的任务以证明...

    java web开发之验证码

    在Java Web开发中,验证码(CAPTCHA)是一种用于防止机器自动操作的安全机制,它通过让用户识别并输入图片中的文字或数字来验证用户是人类而不是机器人。本篇将详细介绍如何在Java Web环境中实现一个简单的验证码...

    web端实现app客户端输入验证码的效果

    通过以上步骤,我们可以实现一个类似App客户端的Web端验证码输入功能。在实际项目中,还需要结合具体需求和用户体验进行定制和优化。例如,可以使用图片验证码提高安全性,或者使用滑动验证码增强用户体验。记住,...

    SSM实现登录验证码功能

    SSM(Spring、SpringMVC、MyBatis)是一个经典的Java web开发框架组合,它将Spring的核心容器、Spring MVC作为视图控制器以及MyBatis作为持久层框架集成在一起,为开发者提供了一种高效且灵活的开发方式。...

    asp.net实现验证码功能

    ASP.NET 是微软开发的一种用于构建Web应用程序的框架,它提供了丰富的功能和工具,使得开发者能够高效地创建动态、交互式的网站。在这个特定的场景中,我们关注的是如何在ASP.NET中实现验证码功能,这是一种用于验证...

    Web动态生成验证码

    JSP(JavaServer Pages)和Servlet是Java Web开发中的核心组件,它们可以协同工作来实现这个功能。 JSP是一种服务器端技术,它允许开发者将HTML代码与Java代码混合编写,从而创建动态网页。Servlet则是Java编程中的...

    java实现验证码产生功能

    在Java JSP(Java Server Pages)中实现验证码功能,主要涉及以下几个关键知识点: 1. **随机字符串生成**: 验证码通常由一组随机字符组成,可以是字母、数字或两者混合。在Java中,我们可以使用`java.util....

    web/java/jsp实现发送手机短信验证码和邮箱验证码的注册登录功能

    同时,为了安全,每次验证码输入错误或过期后,应重新生成新的验证码。 6. **安全考虑**: - 验证码应具有时效性,避免长时间未使用的验证码被恶意使用。 - 限制同一手机号或邮箱短时间内发送验证码的次数,防止...

    Asp.net 实现验证码功能的Web控件

    ### ASP.NET实现验证码功能的Web控件 #### 概述 在现代Web应用开发中,验证码作为一种简单而有效的防机器人措施被广泛应用于登录、表单提交等场景中。本文将详细介绍如何利用ASP.NET来实现一个自定义的验证码功能...

    Qt实现随机验证码功能

    在IT领域,尤其是在Web开发和安全验证中,验证码(CAPTCHA)是一种常用的技术,用于防止自动化的机器人程序进行恶意操作,如垃圾邮件发送或账户注册。本文将详细讲解如何使用Qt框架来实现一个随机验证码的功能。 Qt...

    实现验证码功能的登陆界面.rar

    在IT行业中,验证码功能是网页应用安全的重要组成部分,它用于防止自动化的机器人或者恶意软件进行非法...通过学习和实践这个项目,开发者可以更好地掌握Web开发中的安全验证技术,为今后的项目开发打下坚实的基础。

    struts2实现验证码

    Struts2是一个强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发中。在Web应用中,验证码是一种防止恶意自动程序(如机器人)滥用服务的安全机制。本教程将详细讲解如何利用Struts2框架来实现验证码...

    使用Java技术来开发Web应用程序的技术框架,使用该技术实现用户登录验证码功能,后台功能代码+前端JSP页面代码

    ### 使用Java技术开发Web应用程序:实现用户登录验证码功能 #### 技术背景 Java Web是一种广泛使用的基于Java技术栈的Web应用开发框架。它利用Java的跨平台特性、丰富的类库资源以及强大的社区支持,为开发者提供...

    web页面实现随机生成验证码的小列子

    在Web开发中,验证码是一种常见的安全机制,用于防止自动化脚本或机器人进行恶意操作,如自动登录、注册等。在这个小例子中,我们将探讨如何在Java Web(SSM:Spring、SpringMVC、MyBatis)环境中实现一个基于...

    Web验证码的代码

    在Web开发中,验证码是一种广泛使用的安全机制,用于防止恶意自动化程序(如机器人或爬虫)进行非法操作,比如注册、登录或者提交表单。在这个名为"Web验证码的代码"的项目中,开发者使用JavaScript和Java Web技术...

    JAVAWEB验证码功能实现附源代码

    本示例提供的源代码是一个简单的JAVAWEB验证码功能实现,它不依赖任何外部jar包,也不涉及JavaScript,全部采用Java后端处理和JSP页面展示。 验证码的实现主要包括以下几个关键步骤: 1. **生成随机验证码**:在...

    vue+springboot+redis+kaptcha实现登录验证码

    本教程将介绍如何结合Vue.js前端框架、Spring Boot后端框架、Redis缓存服务以及Kaptcha验证码技术,实现一个前后端分离的登录页面验证码功能。这个组合可以提供高效、安全且用户友好的验证机制。 首先,Vue.js是一...

    JAVA 验证码WEB应用

    在Java Web开发中,验证码的实现是通过生成随机图像和对应的字符串,用户输入图像上显示的字符串来验证其身份。下面我们将深入探讨这个“JAVA 验证码WEB应用”。 首先,验证码的生成过程涉及到几个关键技术点: 1....

Global site tag (gtag.js) - Google Analytics