以前积攒的一个用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>
页面效果:

以前积攒的一个用Java程序生成验证码的代码的更多相关文章
- 分析一个C语言程序生成的汇编代码-《Linux内核分析》Week1作业
署名信息 郭春阳 原创作品转载请注明出处 :<Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 C源码 这 ...
- Java程序生成exe可执行文件详细教程(图文说明)
ava程序打包成exe可执行文件,分为两大步骤. 第一步:将Java程序通过Eclipse或者Myeclipse导成Jar包 第二步:通过exe4j讲Jar包程序生成exe可执行文件 第一步详解: 将 ...
- java识别验证码
所需资源下载链接(资源免费,重在分享) Tesseract:http://download.csdn.net/detail/chenyangqi/9190667 jai_imageio-1.1-alp ...
- 【开发技术】Java生成验证码
Java生成验证码 为了防止用户恶意,或者使用软件外挂提交一些内容,就得用验证码来阻止,虽然这个会影响用户体验,但为了避免一些问题很多网站都使用了验证码;今天下午参考文档弄了一个验证码,这里分享一下; ...
- java制作验证码(java验证码小程序)
手动制作java的验证码 Web应用验证码的组成: (1)输入框 (2)显示验证码的图片 验证码的制作流程: 生成验证码的容器使用 j2ee的servlet 生成图片需要的类: (1) Buffere ...
- 打包java程序生成exe
打包java程序生成exe 目标 我们知道c++的控制台程序编译运行以后就会生成一个exe可执行文件,在电脑上可以直接双击运行,但是java是跨平台的语言,编译运行以后的字节码文件.class是和平台 ...
- 使用Java设计验证码生成程序
我们来设计一个简单的验证码生成程序:验证码一个由4位的数字.字母随机组合而成图像,为了避免被光学字元识别(OCR,Optical Character Recognition)之类的程序识别出图片中的数 ...
- Java生成验证码(二)
前一篇博客已经介绍了如何用Java servlet产生验证码,本篇继续介绍如何使用一些开源组件生成验证码 ———————————————————————————————————————————— ...
- java图形验证码
用java实现验证码的生成,以下代码是一个controller,可以直接使用 package org.jxnd.tongxuelu.controller; import java.awt.Color; ...
随机推荐
- 利用Java编写简单的WebService实例-转载
使用Axis编写WebService比较简单,就我的理解,WebService的实现代码和编写Java代码其实没有什么区别,主要是将哪些Java类发布为WebService.下面是一个从编写测试例子到 ...
- import详解
试想一下 在工作中今年在一个项目中可能会导入某一个目录下的模块文件,那这个时候怎么样才能让Python解释器能够找到该模块进行调用呢? - 将这个模块拷贝一份到当前使用目录下. 这种方式让模块太冗余 ...
- docker从零开始 存储(二)volumes 挂载
使用volumes 卷是保存Docker容器生成和使用的数据的首选机制.mount binds依赖于主机的目录结构,而卷完全由Docker管理.卷绑定安装有几个优点: 与绑定装入相比,卷更易于备份或迁 ...
- django 分页django-pure-pagination(zz)
虽然django自带了一个paginator,但不是很方便,我们使用django-pure-pagination github地址https://github.com/jamespacileo/dja ...
- PHP极速开发框架LotusAdmin page版发布
体验地址及账号如下: 地址 https://page.waytomilky.com/ 账号:admin 密码:123456 LotusAdmin2.0其主要特性包括: 1.基于ThinkPHP5 ...
- django URL参数在view中传递和Template的反向解析方式
一. URL参数在view中传递 1.带参数名:通过named group方式传递指定参数,语法为: (?P<name>pattern), name 为传递参数的名称,pattern代表所 ...
- [centos] 需要 libmpc.so.2 提供下载
http://pan.baidu.com/s/1kTmmthH yum update 的时候需要libmpc.so.2, 于是下载了一个 rpm -ivh filename.rpm 安装上就好了
- 大数模板(Java)
大数加法 /* 给出2个大整数A,B,计算A+B的结果. Input 第1行:大数A 第2行:大数B (A,B的长度 <= 10000 需注意:A B有可能为负数) Output 输出A + B ...
- AMQ学习笔记 - 08. Spring-JmsTemplate之发送
概述 JmsTemplate提供了3组*3,共计9个发送用的方法. 发送的方法有3组: 基本的发送 转换并发送 转换.后处理再发送 必需的资源 必需的资源有: javax.jms.Connecti ...
- 【bzoj2763】[JLOI2011]飞行路线 (分层图最短路)(优先队列dij)
[bzoj2763][JLOI2011]飞行路线 2014年3月25日1,7260 Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城 ...