以前积攒的一个用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; ...
随机推荐
- 让button居中显示的的标签
<center> <input type="button" class="buttoncls" style="width:80px& ...
- 微信支付报错:app没有获取微信支付权限
调试微信支付的时候报错: Array( [return_code] => FAIL [return_msg] => 您没有APP支付权限) 查询了,发现自己将之前的公众号支付的APPID一 ...
- [BZOJ2553][BeiJing2011]禁忌 dp+AC自动机+矩阵快速幂
2553: [BeiJing2011]禁忌 Time Limit: 20 Sec Memory Limit: 128 MBSec Special JudgeSubmit: 1206 Solved ...
- 【原创】Maven cobertura整合多个子项目下的单测覆盖率报告
今天在调试一个UT job的时候发现找不到cobertural报告文件,后来发现在Maven的自项目里找到了对应的代码覆盖率报告,但都是是分散在每个子项目下面的,看起来很不方便.就在想是不是可以把这些 ...
- Java中导入导出Excel -- POI技术
一.介绍: 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实 ...
- 【cocos2d-js官方文档】二、资源管理器Assets Manager
这篇文档将介绍Cocos2d-JS 3.0的一个重量级新特性:资源管理器(仅支持JSB).资源管理器是为游戏运行时的资源热更新而设计的,这里的资源可以是图片,音频甚至游戏脚本本身.使用资源管理器,你将 ...
- 浙江省第十二届省赛 Beauty of Array(思维题)
Description Edward has an array A with N integers. He defines the beauty of an array as the summatio ...
- python 全局解释锁GIL
Python的全局解释器锁GIL用于保护python解释器,使得任意时刻,只有一个线程在解释器中运行.从而保证线程安全 在多线程环境中,Python 虚拟机按以下方式执行: 1. 设置GIL2. 切换 ...
- HSV做通道分离是出现的Vector内存越界错误
vector<Mat> hsvSplit; //因为我们读取的是彩色图,直方图均衡化需要在HSV空间做 split(imgHSV, hsvSplit); equalizeHist(hsvS ...
- 棋盘V
问题 A: 棋盘V 时间限制: 1 Sec 内存限制: 128 MB提交: 150 解决: 3[提交] [状态] [讨论版] [命题人:] 题目描述 有一块棋盘,棋盘的边长为100000,行和列的 ...