一个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>

页面效果:

以前积攒的一个用Java程序生成验证码的代码的更多相关文章

  1. 分析一个C语言程序生成的汇编代码-《Linux内核分析》Week1作业

    署名信息 郭春阳 原创作品转载请注明出处 :<Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 C源码 这 ...

  2. Java程序生成exe可执行文件详细教程(图文说明)

    ava程序打包成exe可执行文件,分为两大步骤. 第一步:将Java程序通过Eclipse或者Myeclipse导成Jar包 第二步:通过exe4j讲Jar包程序生成exe可执行文件 第一步详解: 将 ...

  3. java识别验证码

    所需资源下载链接(资源免费,重在分享) Tesseract:http://download.csdn.net/detail/chenyangqi/9190667 jai_imageio-1.1-alp ...

  4. 【开发技术】Java生成验证码

    Java生成验证码 为了防止用户恶意,或者使用软件外挂提交一些内容,就得用验证码来阻止,虽然这个会影响用户体验,但为了避免一些问题很多网站都使用了验证码;今天下午参考文档弄了一个验证码,这里分享一下; ...

  5. java制作验证码(java验证码小程序)

    手动制作java的验证码 Web应用验证码的组成: (1)输入框 (2)显示验证码的图片 验证码的制作流程: 生成验证码的容器使用 j2ee的servlet 生成图片需要的类: (1) Buffere ...

  6. 打包java程序生成exe

    打包java程序生成exe 目标 我们知道c++的控制台程序编译运行以后就会生成一个exe可执行文件,在电脑上可以直接双击运行,但是java是跨平台的语言,编译运行以后的字节码文件.class是和平台 ...

  7. 使用Java设计验证码生成程序

    我们来设计一个简单的验证码生成程序:验证码一个由4位的数字.字母随机组合而成图像,为了避免被光学字元识别(OCR,Optical Character Recognition)之类的程序识别出图片中的数 ...

  8. Java生成验证码(二)

    前一篇博客已经介绍了如何用Java servlet产生验证码,本篇继续介绍如何使用一些开源组件生成验证码 ————————————————————————————————————————————   ...

  9. java图形验证码

    用java实现验证码的生成,以下代码是一个controller,可以直接使用 package org.jxnd.tongxuelu.controller; import java.awt.Color; ...

随机推荐

  1. 如何在xcode中启用xib方式做应用

    使用storybord的好处和缺点这里不一一说,但是很多人可能习惯xib的方式进行应用的开发. 在xcode环境下可参考如下链接进行设定. http://codefromabove.com/2014/ ...

  2. js的变量的有效域

    function test(o) { var i=0; if(typeof o=="object") { var j=1; for(var k=0;k<10;k++) { c ...

  3. java中Math.abs(-2147483648)的返回值应该是什么?

    我觉得这是一个非常有意思的问题,Math.abs(-2147483648)的返回值应该是什么? java计算结果 为什么没有得到正数结果呢? 首先我们先看下java区分整数正负的原理.在二进制的情况下 ...

  4. 【cocos2d-js官方文档】四、基础数据类型

    基础数据类型统一通过方法来创建.不再支持new方式 1.坐标cc.Point 一共3种创建方式 结构:{x:0,y:0} //1 快捷创建,返回相当于cc.p(0,0) var point1 = cc ...

  5. 2017 ACM-ICPC 亚洲区(青岛赛区)网络赛 1010

    #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #inclu ...

  6. RabbitMQ (五) 订阅者模式之分发模式 ( fanout )

    前面讲到了简单队列和工作队列. 这两种队列有个非常明显的缺点 : 生产者发送的消息,只能进入到一个队列. 消息只能进入到一个队列就意味着消息只能被一个消费者消费. 尽管工作队列模式中,一个队列中的消息 ...

  7. 在scientificlinux7(centos7)中搭建apache+php本地服务器

    首先安装httpd(apache), 开始没有注意,以为可以这样安装 yum install apache 结果不对,搜索下 yum -qvh apache 命令是错的,在来 yum search a ...

  8. [CF494C]Helping People

    题意:有$n$个穷人,每个穷人有$a_i$的钱,有一个富人决定做$q$次捐赠$(l_i,r_i,p_i)$,表示他有$p_i$的概率给$[l_i,r_i]$的人捐$1$的钱,捐赠的价值为捐赠后最富的人 ...

  9. 【bzoj1486】【[HNOI2009]梦幻布丁】启发式链表合并(详解)

    (画师当然是武内崇啦) Description N个布丁摆成一行,进行M次操作.每次将某个颜色的布丁全部变成另一种颜色的,然后再询问当前一共有多少段颜色.例如颜色分别为1,2,2,1的四个布丁一共有3 ...

  10. 13test02:阶乘

    //假设32位int型变量y是表示最大人数的x的阶乘,即y=x!,当x最大值取什么时,y取最大值 //,且乘法不溢出. #include<iostream> using namespace ...