以前积攒的一个验证码

一个Java类:

package com.abc.ufo.util;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.OutputStream;
import java.util.Random;

import javax.imageio.ImageIO;

public class ImageMaker{
    private char map[]={‘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‘,‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘};

    public String getImage(int width,int height,OutputStream os){
        BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);

        Graphics g=image.getGraphics();
        g.setColor(new Color(0xDCDCDC));
        g.fillRect(0, 0, width, height);

        StringBuilder sb=new StringBuilder();
        for(int i=0;i<4;i++){
            sb.append(map[(int)(map.length*Math.random())]);
        }
        String text=sb.toString();

        g.setColor(Color.black);
        g.setFont(new Font("Arial",Font.PLAIN,36));

        g.setColor(Color.red);
        String str=text.substring(0,1);
        g.drawString(str, 18, 32);

        g.setColor(Color.blue);
        str=text.substring(1,2);
        g.drawString(str, 60, 32);

        g.setColor(Color.red);
        str=text.substring(2,3);
        g.drawString(str, 95, 32);

        g.setColor(Color.blue);
        str=text.substring(3,4);
        g.drawString(str, 125, 32);

        g.setColor(Color.gray);
        Random rand=new Random();
        for(int i=0;i<20;i++){
            int x=rand.nextInt(width);
            int y=rand.nextInt(height);
            g.drawOval(x, y, width, height);
        }

        g.setColor(Color.black);
        g.drawRect(0, 0, width-1, height-1);
        //g.drawLine(width-2, 0, width-2, height);

        g.dispose();

        try{
            ImageIO.write(image, "JPEG", os);
        }catch(Exception e){
            //e.printStackTrace();
        }

        return text;
    }
}

JSP:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page contentType="image/jpeg" %>
<jsp:useBean id="image" scope="page" class="com.abc.ufo.util.ImageMaker"/>

<%
    String str=image.getImage(160,40,response.getOutputStream());
    session.setAttribute("verifyCode",str);
    out.clear();
    out = pageContext.pushBody();
%>

页面使用:

<div class="page-container">
            <logic:present name="error">
                 <h2><bean:write name="error"/></h2>
            </logic:present>

            <h1>Login</h1>
            <form action="login.html" method="post">
                <input type="text" id="usernameTxt" name="username" class="username" placeholder="Username">
                <input type="password" id="passwordTxt" name="password" class="password" placeholder="Password">
                <input type="text" id="verifyCodeTxt" name="verifyCode" class="verifyCode" placeholder="Verification code">
                <p><br/>No Zero in the verification code</p>
                <img src="pages/user/login/image.jsp"/> <!-- 这个路径就是前面jsp的路径 -->
                <button id="submitBtn">Sign me in</button>
                <div class="error"><span>+</span></div>
            </form>
            <div class="connect" style="display:none">
                <p>Or connect with:</p>
                <p>
                    <a class="facebook" href=""></a>
                    <a class="twitter" href=""></a>
                </p>
            </div>
        </div>

页面效果:

时间: 2024-09-30 04:21:25

以前积攒的一个验证码的相关文章

JS实现的一个验证码,可以在前端验证后在提交action

js实现的一个验证码功能,可以在前端判断验证码输入是否正确 输入的邮箱格式是否正确 验证成功后才提交action到后台 1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/

自己实现一个验证码功能

用Servlet技术实现验证码功能,(画出一个验证码) 公司中一般用写好的验证码(jar包),很少使用自己去画验证码 . package chensi.com; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import j

再学IHanlder 类----------------关于Asp.net与iis原理网上看博客收获写一个验证码用一般处理程序记的好长时间前就写过不过现在再看有点不一样的感觉

建一个web网站 新建一般处理程序直接贴代码: using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.SessionState;using System.Drawing;using System.Text;using System.Drawing.Imaging; namespace HandlerStudy{    /// <summary>    /

ASP.NET尝试着做一个验证码。

新建一个checkcode.aspx用于显示验证码. 重要代码如下: private string GenerateCheckCode()//GenerateCheckCode方法生成验证码字符串. { int num; char code; string checkCode = string.Empty; System.Random random = new Random(); for (int i = 0; i < 4; i++)//这里修改这个4为几就能使验证码的位数为几,本次仅仅测试,所

数组的去重,以及随机一个验证码

一 数组的去重 代码如下: var arr=[1,1,1,12,2,3,4,4,5]; function quchong(arrtest){ var arrkong=[]; // var 一个空数组,用于存储不重复的内容 for(var i=0;i<=arrtest.length;i++){ //循环遍历数组中的每一个元素 if(arrkong.indexOf(arrtest[i])<0){ // 将不重复的元素,即indexof <0 的数取出 arrkong.push(arrtest

使用nodejs去做一个验证码

let express = require('express'); let captchapng = require('captchapng'); let app = express(); app.get('/cap',function (req, res) { res.render('html',{a,b,c,d}) // width,height, numeric captcha 数字验证码 //他这个图片 每个数字之间是 80 这个图片的高度是30 let num = parseInt(M

用response输出一个验证码

package servlet; 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

包装一个php的验证码类

验证码是我们开发的时候经常用到的功能,所以在此本人包装了一个验证码类,应该可以作为php的类插件用,在此分享给各位博客园的读友. 实现的原理也是很简单,就是利用画布的几个元素,再加上一些字符串的获取,东凑西凑就构成了,呵呵. 这里大概写一下思路吧,其实这个类已经注释的非常清楚了,不过,个人还是在行文前啰嗦一下. 首先是关于一些函数的解释,这里的解释纯属个人体会,有什么错误的地方,还请读者指正. 1.创建画布函数:imagecreatetruecolor(w,h); 说明:用于创建一个画布. w

一个Maven实现的验证码模块

下面是Maven构建的实现账户注册服务的account-captcha模块,该模块负责处理账户注册时key生成.图片生成以及验证等. POM部分配置 //account-captcha的pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h