开发者社区> 桃子红了呐> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

以前积攒的一个用Java程序生成验证码的代码

简介:
+关注继续查看

一个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>
复制代码

页面效果:

 














本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/xiandedanteng/p/4095652.html,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
java中验证码的使用
需要注意的是,要将验证码存入session ,切记return null //验证码
57 0
Javascript实现Java的HashMap(链表散列)
前言 如果你研究过Java中HashMap的源码,你就会知道HashMap底层的存储结构。Java中的HashMap是以链表散列的形式存储的,也就是数组+链表:HashMap中有一个Entry数组,默认的数组长度是16。
1860 0
《深度学习:Java语言实现》一一1.1人工智能的变迁
本节书摘来自华章出版社《深度学习:Java语言实现》一 书中的第1章,第1.1节,作者:[日]巣笼悠辅(Yusuke Sugomori) 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1481 0
《深度学习:Java语言实现》一一1.2人与机器的区分因素
本节书摘来自华章出版社《深度学习:Java语言实现》一 书中的第1章,第1.2节,作者:[日]巣笼悠辅(Yusuke Sugomori) 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1196 0
《深度学习:Java语言实现》一一1.3人工智能与深度学习
本节书摘来自华章出版社《深度学习:Java语言实现》一 书中的第1章,第1.3节,作者:[日]巣笼悠辅(Yusuke Sugomori) 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3949 0
《深度学习:Java语言实现》一一1.4小结
本节书摘来自华章出版社《深度学习:Java语言实现》一 书中的第1章,第1.4节,作者:[日]巣笼悠辅(Yusuke Sugomori) 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
881 0
《深度学习:Java语言实现》一一2.1入门
本节书摘来自华章出版社《深度学习:Java语言实现》一 书中的第2章,第2.节,作者:[日]巣笼悠辅(Yusuke Sugomori) 著 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1117 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
JAVA反射原理以及一些常见的应用
立即下载
Java开发者面试百宝书
立即下载
从《阿里巴巴Java开发手册》编写推广谈技术成长
立即下载