- 浏览: 36727 次
- 性别:
- 来自: 郑州
文章分类
最新评论
-
yekui:
把Liberarise 重新导,src等都从新倒 即可解决。
tomcat编译工程之后classes文件夹下没有文件或者缺失文件解决办法 -
w1113:
刚才也碰到你的这个问题,编译后的class文件发布不上去,最后 ...
tomcat编译工程之后classes文件夹下没有文件或者缺失文件解决办法 -
苏叶晚晚:
我也遇到了同样。。。无奈的问题。唉==
用楼主的奇思妙想的办法 ...
tomcat编译工程之后classes文件夹下没有文件或者缺失文件解决办法
public class RandomNumUtil {
private ByteArrayInputStream image;//图像
private String str;//验证码
private RandomNumUtil(){
init();//初始化属性
}
/*
* 取得RandomNumUtil实例
*/
public static RandomNumUtil Instance(){
return new RandomNumUtil();
}
/*
* 取得验证码图片
*/
public ByteArrayInputStream getImage(){
return this.image;
}
/*
* 取得图片的验证码
*/
public String getString(){
return this.str;
}
private void init() {
// 在内存中创建图象
int width=85, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
// 生成随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);
// 设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
// 取随机产生的认证码(6位数字)
String sRand="";
for (int i=0;i<6;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand,13*i+6,16);
}
//赋值验证码
this.str=sRand;
//图象生效
g.dispose();
ByteArrayInputStream input=null;
ByteArrayOutputStream output = new ByteArrayOutputStream();
try{
ImageOutputStream imageOut = ImageIO.createImageOutputStream(output);
ImageIO.write(image, "JPEG", imageOut);
imageOut.close();
input = new ByteArrayInputStream(output.toByteArray());
}catch(Exception e){
System.out.println("验证码图片产生出现错误:"+e.toString());
}
this.image=input;/* 赋值图像 */
}
/*
* 给定范围获得随机颜色
*/
private Color getRandColor(int fc,int bc){
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
}
}
验证码action类
public class RandomAction extends BasicAction{
private ByteArrayInputStream inputStream;
public String execute() throws Exception{
RandomNumUtil rdnu=RandomNumUtil.Instance();
this.setInputStream(rdnu.getImage());//取得带有随机字符串的图片
ActionContext.getContext().getSession().put("random", rdnu.getString());//取得随机字符串放入HttpSession
return SUCCESS;
}
public void setInputStream(ByteArrayInputStream inputStream) {
this.inputStream = inputStream;
}
public ByteArrayInputStream getInputStream() {
return inputStream;
}
}
用户登录前打验证方法,主要说用于验证验证码的正确与否
public void validateLoginUser() throws Exception{
String arandom=(String)(ActionContext.getContext().getSession().get("random"));
try {
if(arandom !=null){
String validateCode=arandom.toString();
if(rand != null && !rand.equals(validateCode)){
this.addFieldError("rand","验证码错误!");
}
}
} catch (Exception e) {
LOG.error("拉取验证码失败",e);
throw e;
}
}
private ByteArrayInputStream image;//图像
private String str;//验证码
private RandomNumUtil(){
init();//初始化属性
}
/*
* 取得RandomNumUtil实例
*/
public static RandomNumUtil Instance(){
return new RandomNumUtil();
}
/*
* 取得验证码图片
*/
public ByteArrayInputStream getImage(){
return this.image;
}
/*
* 取得图片的验证码
*/
public String getString(){
return this.str;
}
private void init() {
// 在内存中创建图象
int width=85, height=20;
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
// 获取图形上下文
Graphics g = image.getGraphics();
// 生成随机类
Random random = new Random();
// 设定背景色
g.setColor(getRandColor(200,250));
g.fillRect(0, 0, width, height);
// 设定字体
g.setFont(new Font("Times New Roman",Font.PLAIN,18));
// 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
g.setColor(getRandColor(160,200));
for (int i=0;i<155;i++)
{
int x = random.nextInt(width);
int y = random.nextInt(height);
int xl = random.nextInt(12);
int yl = random.nextInt(12);
g.drawLine(x,y,x+xl,y+yl);
}
// 取随机产生的认证码(6位数字)
String sRand="";
for (int i=0;i<6;i++){
String rand=String.valueOf(random.nextInt(10));
sRand+=rand;
// 将认证码显示到图象中
g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));
// 调用函数出来的颜色相同,可能是因为种子太接近,所以只能直接生成
g.drawString(rand,13*i+6,16);
}
//赋值验证码
this.str=sRand;
//图象生效
g.dispose();
ByteArrayInputStream input=null;
ByteArrayOutputStream output = new ByteArrayOutputStream();
try{
ImageOutputStream imageOut = ImageIO.createImageOutputStream(output);
ImageIO.write(image, "JPEG", imageOut);
imageOut.close();
input = new ByteArrayInputStream(output.toByteArray());
}catch(Exception e){
System.out.println("验证码图片产生出现错误:"+e.toString());
}
this.image=input;/* 赋值图像 */
}
/*
* 给定范围获得随机颜色
*/
private Color getRandColor(int fc,int bc){
Random random = new Random();
if(fc>255) fc=255;
if(bc>255) bc=255;
int r=fc+random.nextInt(bc-fc);
int g=fc+random.nextInt(bc-fc);
int b=fc+random.nextInt(bc-fc);
return new Color(r,g,b);
}
}
验证码action类
public class RandomAction extends BasicAction{
private ByteArrayInputStream inputStream;
public String execute() throws Exception{
RandomNumUtil rdnu=RandomNumUtil.Instance();
this.setInputStream(rdnu.getImage());//取得带有随机字符串的图片
ActionContext.getContext().getSession().put("random", rdnu.getString());//取得随机字符串放入HttpSession
return SUCCESS;
}
public void setInputStream(ByteArrayInputStream inputStream) {
this.inputStream = inputStream;
}
public ByteArrayInputStream getInputStream() {
return inputStream;
}
}
用户登录前打验证方法,主要说用于验证验证码的正确与否
public void validateLoginUser() throws Exception{
String arandom=(String)(ActionContext.getContext().getSession().get("random"));
try {
if(arandom !=null){
String validateCode=arandom.toString();
if(rand != null && !rand.equals(validateCode)){
this.addFieldError("rand","验证码错误!");
}
}
} catch (Exception e) {
LOG.error("拉取验证码失败",e);
throw e;
}
}
发表评论
-
经典sql语句大全
2011-03-07 17:42 901一、基础 1、说明:创建数据库CREATE DATABA ... -
Java面向对象设计最佳实践
2011-03-07 17:40 813Java面向对象设计最佳实践 内置类设计 从这篇文 ... -
Spring AOP处理日志
2011-03-07 17:39 1245Spring AOP处理日志 AOP正 ... -
验证码相关2
2011-03-07 16:57 691登录的jsp页面: <%@ page language= ... -
LoginInterceptor (用户登录拦截器类)
2011-03-07 16:54 1867public class LoginInterceptor e ... -
PageHelper (分页导航类,根据当前页计算导航链接)
2011-03-07 16:54 2651public class PageHelper { ... -
Pager(分页查询类)
2011-03-07 16:53 1302public class Pager extends Hibe ... -
FileTool (文件工具类)
2011-03-07 16:51 1650public class FileTool { ... -
CustomActionSupport (继承ActionSupport的类)
2011-03-07 16:50 811public class CustomActionSuppor ... -
StringTool(字符串工具类)
2011-03-07 16:49 1398public class StringTool { ... -
DateFormatTool(日期格式和字符串格之间转换类,日期转换器用到此类)
2011-03-07 16:49 1959public class DateFormatTool { ... -
LongConvert(Long类型转换器)
2011-03-07 16:48 967public class LongConvert extend ... -
IntConvert(整数类型转换器)
2011-03-07 16:47 826public class IntConvert extends ... -
DateConvert(日期类型转换器)
2011-03-07 16:47 1748public class DateConvert extend ... -
Xwork-conversion.properties资源文件全文
2011-03-07 16:46 1146java.sql.Timestamp=com.wyt.comm ... -
Struts.priperties配置文件全文
2011-03-07 16:46 789struts.objectFactory=spring str ... -
SSH2整合过程中出现的错误及解决方法
2011-03-07 16:45 1108老是报,ERROR [main] (Conte ... -
SSH2整合的顺序
2011-03-07 16:44 10331. 添加Spring 2.0的Libraries 选择 ... -
log4j.properties资源文件全文
2011-03-07 16:43 688log4j.rootLogger=INFO,ERROR,con ... -
init.properties资源文件全文
2011-03-07 16:42 1531datasource.type=mssql datasourc ...
相关推荐
和验证码相关的图片数据集 数据说明: ·图像:包含PNG格式的验证码图像的文件夹。 ·Labels:包含两列的CSV文件:image_filename和文本。imagefilename对应于CAPTCHA图像的文件名,text包含CAPTCHA中描述的字母数字文本...
这个压缩包"安卓验证码相关-自定义布局验证码.rar"显然包含了关于如何在Android应用中实现自定义验证码布局的相关资源。让我们深入探讨一下这个话题。 验证码通常包含随机生成的一串字符或者一组图片,用户需要输入...
【验证码技术概述】 ...总的来说,SmsCodeHelper是一个有助于理解和实现安卓短信验证码处理的工具,通过学习其源码,开发者可以掌握验证码相关的技术,并能应用于自己的项目中,提高应用的安全性和用户体验。
本压缩包"安卓验证码相关-android本地验证码生成.rar"包含了一些关于在Android平台上实现本地验证码生成的源码和资料。下面将详细介绍验证码的原理以及如何在Android中实现。 验证码的原理: 验证码是一种“全自动...
这个压缩包"安卓验证码相关-短信验证码.rar"包含了与短信验证码实现相关的资源,可能包括源码示例和一些文档。虽然不能确保每个文件都能直接运行,但它们可以作为学习和参考的材料。 短信验证码的基本原理是:当...
本资源"安卓验证码相关-第三方验证码免费简单详细Android.zip"提供了一些关于如何在Android平台上集成第三方验证码服务的资料。下面将详细介绍验证码在Android中的应用和相关知识点。 首先,验证码的种类主要有图像...
本文将深入探讨"安卓验证码相关-随机图片验证码适合登录页面使用点击更换输入错误自动更换.rar"这个压缩包所包含的知识点。 首先,随机图片验证码是一种基于图像的验证方式,它的核心思想是生成一串随机字符,并将...
Qt实现验证码相关功能: 1.在QT Designer中创建一个UI界面,添加一个Label标签,两个Button按钮以及一个lineEdit输入框 2.设置Label标签:将Label标签设置为显示验证码。你可以使用QLabel类来创建标签,并设置其...
这个名为“安卓验证码相关-Android随机验证码.rar”的压缩包文件显然包含了与实现Android平台上的随机验证码功能相关的资源。以下是对其中可能包含的知识点的详细说明: 1. **验证码的基本原理**: 验证码...
本文将深入探讨如何在Android平台上实现随机验证码的功能,以及相关的技术要点。 验证码的核心在于生成难以被算法识别的随机字符串或图像,同时确保用户可以轻松读取并输入。在Android中,我们可以采用两种常见的...
这个压缩包文件"安卓验证码相关-1420725588121一个随机数产生实例.rar"可能包含了一个关于如何在Android平台上生成验证码的示例。验证码通常涉及到随机数的生成,而随机数在安全性和不可预测性方面有着严格的要求。 ...
手机验证码在IT行业中扮演着重要的角色,特别是在网络安全和身份验证方面。...本模块结合了“爱码”和“飞Q”这两个知名的验证码服务平台...通过该模块,开发者可以更加专注于核心业务逻辑,而无需担心验证码相关的问题。
- 在SpringMVC配置中,定义验证码相关的Controller映射。 - 在Spring配置中,配置Session管理,确保在服务器端能正确存储和读取Session数据。 - MyBatis在此处主要涉及用户登录的数据库操作,可能包括查询用户...
完整的包名可能是`cn.somecompany.captcha`,其中包含了验证码相关的类和接口。 总的来说,Java验证码生成工具类是一个实用的安全组件,它结合了随机数生成、图像处理和字符串操作等技术,为Web应用提供了有效的...
- 为了防止跨站请求伪造(CSRF),在验证验证码时,应同时检查一个与验证码相关的隐藏字段,确保请求来自同一会话。 - 定期更新会话中的验证码,防止长时间未使用的验证码被恶意用户利用。 - 考虑使用更安全的...
Android随机生成验证码View,支持数字,字母,数字字母混合,汉子验证码,可以设置验证码位数等.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
验证码在Web应用中扮演着重要的角色,主要用于防止自动化的机器人程序进行恶意操作,例如注册、登录、评论等。本实例是关于ASP.NET平台下验证码的实现,它将帮助你理解和掌握如何在你的ASP.NET应用程序中集成验证码...
Java项目_DRP完整版_资料_验证码相关资料
对手机号码进行发送验证码.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。