验证码java如何实现_怎样用java实现验证码
现在许多系统的注册、登录或者发布信息模块都添加的随机 验证码 功能,就是为了避免自动注册程序或者自动发布程序的使用。
验证码实际上就是随机选择一些字符以图片的形式展现在页面上,如果进行提交操作的同时需要将图片上的字符同时提交,如果提交的字符与服务器session保存的不同,则认为提交信息无效。为了避免自动程序分析解析图片,通常会在图片上随机生成一些干扰线或者将字符进行扭曲,增加
自动识别验证码
的难度。
在这里,我们使用java实现验证码。
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);
}
%>
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
// 在内存中创建图象
int width=60, 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);
}
// 取随机产生的认证码(4位数字)
String codeList = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
String sRand="";
for (int i=0;i<4;i++){
int a=random.nextInt(codeList.length()-1);
String rand=codeList.substring(a,a+1);
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);
}
// 将认证码存入SESSION
session.setAttribute("rand",sRand);
// 图象生效
g.dispose();
// 输出图象到页面
ImageIO.write(image, "JPEG", response.getOutputStream());
out.clear();
out = pageContext.pushBody();
%>
前台显示 然后将验证码放入session 后台从session中提取即可
验证码java如何实现_怎样用java实现验证码相关推荐
- java ean13 计算_实训java第三课 for 逻辑运算符 条件判断 商品条形码Ean-13验证码生成...
package com.tarena.day03; public class SwitchDemo { /** * Switch */ public static void main(String[] ...
- 马士兵 java 学习笔记_马士兵java教程笔记1
---恢复内容开始--- 前记 虽然已经是个研究生了,但是会的东西还是特别的少 甚至连java都不能说是很会 所以准备从现在开始能好好的学习java 变成java master 标识符 标识符是由字母 ...
- java 02-cf_cf活动如何设置java环境变量_如何设置java环境变量
cf助手怎么连接wifi_连接无线网设置 对于刚刚学习java的win7用户来说,首先要学会安装jdk和配置java环境变量,这是学习java的唯一途径,否则编写的代码运行时会出现bug.关于这一点, ...
- java 字符串乱码_这份Java面试题含答案解析竟然真的让你不用在面试上“如履薄冰”...
面试题集共分为以下十部分: 一.Core Java: 1 - 95 题1 - 24 页 基础及语法: 1 - 61 题1 - 13 页 异常: 62 - 69 题13 - 15 页 集合: 70 - ...
- java console 交互_实例讲解java中Console类的用法
java的Console类的使用方法及实例 java的Console类的使用方法及实例 JDK 6中提供了java.io.Console类专用来访问基于字符的控制台设备.如果你的Java程序要与Win ...
- java for循环_愉快地学Java语言:第五章 循环
导读 本文适合Java入门,不太适合Java中高级软件工程师.本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述.本篇文章只是这个系列中的一篇,如果 ...
- java 内存空间_怎样用java实现存储空间动态分配
1.java是如何管理内存的 Java的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 (基本类型除外),所有的对象 ...
- linux java远程调试_[转]JPDA:Java平台调试架构(常用的远程调试方法)
原文出处:http://www.javaeye.com/topic/75128 最近使用WTP的Server功能很不爽,连tomcat服务器时java类中的任何改动都要重启服务器,一怒之下就改用JPD ...
- java在线编译器_什么是Java内存模型
在知识星球中,有个小伙伴提了一个问题:有一个关于JVM名词定义的问题,说"JVM内存模型",有人会说是关于JVM内存分布(堆栈,方法区等)这些介绍,也有地方说(深入理解JVM虚拟机 ...
- java web 截图_如何以Java实现网页截图技术
今天看到某网友关于"如何以Java实现网页截图技术"的咨询帖,由于出现该咨询的地点非常不适合较长回复,故以博文形式回答. 事实上,如果您想以Java实现网页截图,也就是" ...
最新文章
- python刷题笔记怎么改_python面试题刷题笔记1 - 10
- Android手机启动流程与TEE OS
- (三)硕博生常用的英文文献下载的网站
- Apache配置文件
- MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)
- 线性代数导论5——SVD分解
- 如何测定拼色染液中,各染料在不同染色时间时,染液中残留染料量及织物上吸附上染的染料量?
- 视觉在无人驾驶中的应用及分类_机器视觉在智能化生产中的广泛应用
- 手把手教你做产品经理1.0
- 美国Compuware败退中国市场!又一家外企逃离
- 拉勾教育管理系统(前端)
- Mac配置Android SDK环境变量
- BP神经网络之BP算法手写推导
- 百旺税控服务器维护,税控盘是百旺的,但航天信息发信息要交维护费,是什么意思?...
- PDF怎么拆分?有哪些免费的PDF拆分软件
- bootstrap 滚动 进度条_Bootstrap中的进度条
- 用大数据解决“痛点”问题 “云上贵州”再发力
- 远程工具MobaXterm安装和使用教程
- 连接策略与搜索引擎优化
- Security(安全框架)
热门文章
- 获取当前本地登录的QQ号码
- Share Disk、Share Memory和Share Nothing的区别
- 程序员大保健指南,给自己的身心偶尔放松的机会
- Beyond Compare 30天评估期结束解决办法
- cefsharp 网页另存为图片,CefSharp获取页面截图
- 51c语言单片机io口控制实验报告,单片机实验报告二 单片机IO口实验
- java mail pom_集成JavaMail
- cad补全三视图_机械制图课程中补全三视图的解题方法
- 华为安装gsm框架_华为nova5怎么下载安装谷歌服务助手,安装GMS框架教程
- c程序设计(谭浩强)阅读与实操 1章 (新手向)