- 浏览: 2259914 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
关键字:验证码的实现
servlet代码:
package com.sinosoft.edu.common;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* 验证码 生成
* @author linzhen
*
*/
public class ValidateCodeServlet extends HttpServlet {
private static int WIDTH = 66;
private static int HEIGHT = 20;
private static int LENGTH = 4;
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream();
//设置浏览器不要缓存此图片
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
//创建内存图象并获得其图形上下文
BufferedImage image =
new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
//产生随机的认证码
char [] rands = generateCheckCode();
//产生图像
drawBackground(g);
drawRands(g,rands);
//结束图像的绘制过程,完成图像
g.dispose();
//将图像输出到客户端
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(image, "JPEG", bos);
byte [] buf = bos.toByteArray();
response.setContentLength(buf.length);
//下面的语句也可写成:bos.writeTo(sos);
sos.write(buf);
bos.close();
sos.close();
//System.out.print("*validateCodeservlei");
//将当前验证码存入到Session或者数据库中,下一个表单处理中验证客户端提交的验证码是否正确
session.setAttribute("check_code",new String(rands));
}
private static char [] generateCheckCode()
{
//定义验证码的字符表
String chars = "23456789ABCDEFGHKMNPQRSTUVWXYZ";
char [] rands = new char[LENGTH];
for(int i=0; i<LENGTH; i++)
{
int rand = (int)(Math.random() * 30);
rands[i] = chars.charAt(rand);
}
return rands;
}
private void drawRands(Graphics g , char [] rands)
{
g.setColor(Color.BLACK);
g.setFont(new Font(null,Font.ITALIC|Font.BOLD,18));
//在不同的高度上输出验证码的每个字符
g.drawString("" + rands[0],1,17);
g.drawString("" + rands[1],16,15);
g.drawString("" + rands[2],31,18);
g.drawString("" + rands[3],46,16);
// g.drawString("" + rands[4],61,14);
// g.drawString("" + rands[5],76,19);
// //System.out.println(rands);
}
private void drawBackground(Graphics g)
{
//画背景
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, WIDTH, HEIGHT);
//随机产生120个干扰点
for(int i=0; i<120; i++)
{
int x = (int)(Math.random() * WIDTH);
int y = (int)(Math.random() * HEIGHT);
int red = (int)(Math.random() * 255);
int green = (int)(Math.random() * 255);
int blue = (int)(Math.random() * 255);
g.setColor(new Color(red,green,blue));
g.drawOval(x,y,1,0);
}
//加两条干扰线
g.drawLine(0, 5, 90, 5);
g.drawLine(0, 15, 90, 15);
}
}
jsp代码:
<img width="66" height="20" onclick="changeImg();" style="cursor:hand;" title='看不清楚? align="middle" id='imgsrc' src="ImgValidateServlet" />
附件是一个完整的工程,不过是我个性的设置,大家可以根据这个例子自己改一下!!!
至于字体(附件有 验证码支持的字体)、颜色、几位数、图片大小 等问题 自己修改 servlet内容即可!!!
servlet代码:
package com.sinosoft.edu.common;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
/**
* 验证码 生成
* @author linzhen
*
*/
public class ValidateCodeServlet extends HttpServlet {
private static int WIDTH = 66;
private static int HEIGHT = 20;
private static int LENGTH = 4;
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
this.doPost(req, resp);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession();
response.setContentType("image/jpeg");
ServletOutputStream sos = response.getOutputStream();
//设置浏览器不要缓存此图片
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
//创建内存图象并获得其图形上下文
BufferedImage image =
new BufferedImage(WIDTH, HEIGHT, BufferedImage.TYPE_INT_RGB);
Graphics g = image.getGraphics();
//产生随机的认证码
char [] rands = generateCheckCode();
//产生图像
drawBackground(g);
drawRands(g,rands);
//结束图像的绘制过程,完成图像
g.dispose();
//将图像输出到客户端
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ImageIO.write(image, "JPEG", bos);
byte [] buf = bos.toByteArray();
response.setContentLength(buf.length);
//下面的语句也可写成:bos.writeTo(sos);
sos.write(buf);
bos.close();
sos.close();
//System.out.print("*validateCodeservlei");
//将当前验证码存入到Session或者数据库中,下一个表单处理中验证客户端提交的验证码是否正确
session.setAttribute("check_code",new String(rands));
}
private static char [] generateCheckCode()
{
//定义验证码的字符表
String chars = "23456789ABCDEFGHKMNPQRSTUVWXYZ";
char [] rands = new char[LENGTH];
for(int i=0; i<LENGTH; i++)
{
int rand = (int)(Math.random() * 30);
rands[i] = chars.charAt(rand);
}
return rands;
}
private void drawRands(Graphics g , char [] rands)
{
g.setColor(Color.BLACK);
g.setFont(new Font(null,Font.ITALIC|Font.BOLD,18));
//在不同的高度上输出验证码的每个字符
g.drawString("" + rands[0],1,17);
g.drawString("" + rands[1],16,15);
g.drawString("" + rands[2],31,18);
g.drawString("" + rands[3],46,16);
// g.drawString("" + rands[4],61,14);
// g.drawString("" + rands[5],76,19);
// //System.out.println(rands);
}
private void drawBackground(Graphics g)
{
//画背景
g.setColor(new Color(0xDCDCDC));
g.fillRect(0, 0, WIDTH, HEIGHT);
//随机产生120个干扰点
for(int i=0; i<120; i++)
{
int x = (int)(Math.random() * WIDTH);
int y = (int)(Math.random() * HEIGHT);
int red = (int)(Math.random() * 255);
int green = (int)(Math.random() * 255);
int blue = (int)(Math.random() * 255);
g.setColor(new Color(red,green,blue));
g.drawOval(x,y,1,0);
}
//加两条干扰线
g.drawLine(0, 5, 90, 5);
g.drawLine(0, 15, 90, 15);
}
}
jsp代码:
<img width="66" height="20" onclick="changeImg();" style="cursor:hand;" title='看不清楚? align="middle" id='imgsrc' src="ImgValidateServlet" />
附件是一个完整的工程,不过是我个性的设置,大家可以根据这个例子自己改一下!!!
至于字体(附件有 验证码支持的字体)、颜色、几位数、图片大小 等问题 自己修改 servlet内容即可!!!
- 验证码自支持的字体.rar (415 Bytes)
- 下载次数: 22
- code.rar (1.6 MB)
- 下载次数: 24
发表评论
-
各大巨头电商提供的IP库API接口-新浪、搜狐、阿里...
2015-04-22 13:18 15907关键字:各大巨头电商提供的IP库API接口-新浪、搜狐、阿里. ... -
用Java来获取访问者真实的IP地址-超准确
2015-04-22 12:55 6253关键字:用Java来获取访问者真实的IP地址-超准确 下面分享 ... -
Shiro集成OAuth2
2015-04-21 10:31 12439关键字:Shiro集成OAuth2 参考:http://jin ... -
淘宝网架构分享总结 - 架构,分布式,淘宝,虚拟化,水平伸缩
2015-04-19 00:25 7633推荐综合架构交流群:JAVA开发高级群 点击入群!!! 关键 ... -
Zookeeper 和 SASL
2015-04-16 09:29 13627关键字:Zookeeper 和 SASL 介绍 这是一个描述Z ... -
非对称加密(RSA)加密解密实现通信JAVA端工具类(教程)
2015-04-15 17:27 1180关键字:非对称加密(RSA)加密解密实现通信JAVA端工具类( ... -
对称加密(AES)加密实现工具类(教程)
2015-04-15 17:11 2142关键字:对称加密(AES)加密实现工具类(教程) Java加 ... -
Curator-Framework开源Zookeeper快速开发框架介绍
2015-04-14 18:41 699关键字:Curator-Framework开源Zookeepe ... -
IM消息推送之Openfire
2015-04-13 13:40 2202关键字:IM消息推送之Openfire Openfire 采用 ... -
Nio框架之Mina的demo
2015-04-12 13:38 638关键字:Nio框架之Mina的demo 官网:http://m ... -
AMQP中文版协议规范
2015-01-23 17:12 2986关键字:AMQP中文版协议规范 AMQP中文版协议规范:ht ... -
数据库连接池选型
2014-12-04 18:32 1166关键字:数据库连接池选型 proxool(与spring不太 ... -
spring中的数据源配置信息加密方案
2014-10-22 10:36 1072关键字:spring中的数据源配置信息加密方案 附件是完整的 ... -
OAuth2.0的Java实现 Apache Amber
2014-10-09 23:20 783关键字:OAuth2.0的Java实现 Apache Ambe ... -
企业信息管理系统基础框架jeesite
2014-05-06 22:21 2580jeesite项目地址(使用说明,):http://jeesi ... -
java中文分词组件-word分词
2014-05-06 21:33 21982关键字:java中文分词组 ... -
java制作可执行文件EXE文件
2014-05-05 18:58 1598关键字:java制作可执行文件EXE文件 参考:http: ... -
Quartz任务调度器详解
2014-04-25 22:46 18990关键字: 参考文章:ht ... -
各种hash算法-hashcodeUtil
2014-04-24 15:36 4232关键字:各种hash算法-hashcodeUtil -
性能监控工具类(StopWatchUtil)
2014-03-21 15:12 5745关键字:性能监控工具类(StopWatchUtil) 附 ...
相关推荐
Java阿里云短信验证码实现 Java阿里云短信验证码实现是指通过阿里云短信服务平台发送短信验证码的实现,以下是该实现的详细介绍。 登录阿里云开放平台 在实现Java阿里云短信验证码之前,需要首先登录阿里云开放...
在“中文及字母数字验证码实现”中,系统会从预设的汉字库和字母数字集合中随机抽取一定数量的字符。为了增加破解难度,这些字符可以包含大小写字母、数字以及中文字符。 2. **乱序排列**:抽取的字符会被随机排列...
JavaWeb使用验证码实现简单登录 在JavaWeb开发中,验证码是一种常用的安全机制,用于防止机器人和恶意攻击。下面将详细介绍如何使用验证码实现简单登录功能。 验证码的原理 验证码的原理是基于HTTP协议的请求响应...
jsp验证码实现源代码2008年05月06日 星期二 10:06在开发中验证码是比较常用到有效防止这种问题对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试的方式。
动态滑动后端验证码是一种常见的安全验证...总之,动态滑动验证码的实现涉及服务器端的图片处理和验证逻辑,以及前端的图片显示和用户交互。它在保障网站安全的同时,也要求开发者在用户体验和安全防护之间找到平衡。
struts2图形验证码实现,两个实现类,和你一个action类
【beego框架图形验证码实现】是使用Go语言开发的一个高效且功能丰富的图形验证码库,它为Web应用提供了安全的验证码生成服务。这个库的核心目的是为了防止自动化程序(如机器人)进行非法操作,如批量注册、恶意登录...
总的来说,“javaweb验证码实现demo”涵盖了从生成随机字符串到绘制图像,再到验证用户输入的整个过程,是学习和理解Java Web验证码实现的一个实用示例。通过分析和实践这个demo,开发者可以更好地理解和掌握验证码...
在提供的压缩包文件"Java验证码实现"中,可能包含了实现以上步骤的Java源代码文件,包括主类、图像处理类和可能的配置文件。通过学习和理解这些代码,你可以进一步掌握Java验证码的实现细节,并将其应用到自己的项目...
总结来说,基于Struts1.x的验证码实现是Web开发中的重要环节,它涉及到服务器端的生成、存储、验证,以及客户端的显示和用户交互。通过合理的验证码设计和实现,可以显著提高Web应用程序的安全性,保护用户的账户不...
在学习这些验证码实现时,你可以通过查看压缩包中的"validateCode"源码文件来深入了解每个验证码的具体实现细节。同时,"截图"可能包含各个验证码的示例图像,帮助理解其外观和工作原理。此外,"关注科帮网获取更多...
在这个"验证码实现的小demo"中,我们将探讨验证码的基本概念、实现原理以及常见类型。 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”的缩写,即全自动区分...
以下是一个简单的GD库验证码实现步骤: 1. 生成随机字符串:使用`rand()`或`mt_rand()`函数生成一定长度的随机字符串。 2. 创建图像:使用`imagecreatetruecolor()`函数创建一个新的图像资源。 3. 设置背景:使用`...
"ASP.NET 验证码实现详解" ASP.NET 验证码实现是 ASP.NET 编程中的一种常见技术,用于生成验证码图片,以防止恶意攻击和自动注册。下面将详细介绍 ASP.NET 验证码实现的知识点: 一、验证码生成 在 ASP.NET 中,...
本资源提供了一套基于Python的团队激励与沟通验证码实现的设计源码,包含65个文件,其中包括27个Python字节码文件,16个Python源代码文件,以及6个HTML页面文件。此外,还包括4个PNG图片文件,3个字体文件,以及3个...
在这个“验证码实现(随机背景色及字体颜色,带扰乱线条)”的项目中,我们将探讨如何创建一个具有随机背景色、字体颜色以及扰乱线条的图像验证码。 首先,`CreatImage.java`是生成验证码图像的核心类。在这个类中...
在前端开发中,验证码是一种常见的安全机制,用于防止自动化脚本或机器人进行恶意操作,比如防止刷票、垃圾...这个项目“前端验证码实现.zip”将详细展示这些步骤和实现细节,帮助开发者深入理解前端验证码的实现过程。
在“红马版验证码实现(中文+变形+噪点)asp.net+C#”中,我们将探讨如何使用ASP.NET和C#编程语言创建一个具有中文字符、形状变形和随机噪点的复杂验证码系统。 首先,验证码的核心在于生成随机但可读的字符串。在...
vc++验证码实现,运用vs2010开发工具