- 浏览: 79177 次
- 性别:
- 来自: 大连
文章分类
最新评论
-
一辈子的咲子推:
其实很多学生考试不及格未必就是不学习,太多学生把大学几年时间全 ...
真的不想监考 -
jackroomage:
看错了,你写的没有问题。sorry!!!
Java Web实践专题——访问路径问题 -
jackroomage:
<a href="./../bb/b_a.js ...
Java Web实践专题——访问路径问题
图形验证码的主要目的是为了增强的安全性,增加用户通过遍历所有可能性来破解密码的难度。
图形验证码的使用包括如下3部分:
l 图形验证码的生成;
l 在页面中的使用;
l 验证;
1、图形验证码的生成
假设在Servlet生成图形验证码,在JavaBean或者JSP中生成的基本过程是相同的。设计如下过程:
l 设置响应的文档类型;
l 生成随机码;
l 把随机码保存到session中;
l 生成图片;
l 把随机码画到内存图片上;
l 把内存图片发送到客户端;
1.1 设置响应的文档类型
在对用户进行响应的时候,需要设置文档类型,要生成图片文档类型可以设置为:image/gif。
在Servlet中的设置方式为:response.setContentType("image/gif");
如果在JSP页面中使用则需要使用:<%@ page contentType="image/gif"%>
1.2 生成随机码
可以根据各种随机数生成策略来生成,并且可以设置随机码有哪些字符组成以及随机码的长度。
本文给出的随机码字符是所有字母和数字。使用的随机码生成策略使用的是Random对象提供的。参考代码如下:
随机码字符列表:
public static final char[] code = {'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',
'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',
'0','1','2','3','4',
'5','6','7','8','9'};
生成随机码的代码:
StringBuffer checkcode=new StringBuffer();
// 每循环一次,生成一位
for(int i=0;i<code_length;i++)
{
int generated=(new Random()).nextInt(62);
checkcode.append(code[generated]);
}
1.3 把随机码保存到session中
为了在用户提交验证码之后进行验证,需要保存生成的验证码,可以保存在session中。在Servlet中需要先获取session对象,然后再使用。
下面是参考代码:
// 把生成的验证码保存到session中
HttpSession session=request.getSession(true);
session.setAttribute("checkCode",checkcode.toString());
1.4 生成图片
使用BufferedImage类创建对象,然后使用画图对象画图。下面是参考代码:
// 创建内存图片,参数为图片的大小以及类型
BufferedImage image
= new BufferedImage(49,14,BufferedImage.TYPE_INT_RGB);
// 得到Graphics句柄
Graphics g = image.getGraphics();
// 设置画笔颜色
// g.setColor(Color.yellow);
// 画背景
g.fillRect(0,1,49,12);
1.5 把随机码显示在图片上
参考下面的代码:
// 设置字体色
g.setColor(Color.black);
// 画验证码
g.drawString(checkcode.toString(),4,11);
// 图象生效
g.dispose();
1.6 把生成的图片发送到客户端
参考代码如下:
ImageIO.write(image, "JPEG", response.getOutputStream());
这样就完成了动态图形验证码的生成。
2、在页面中使用图形码:
与使用其它图形的方式相同,使用<img src=”…”>标签。假设生成图片的Servlet的url-pattern值为checkcode,则在页面中加载图片的代码如下:
<img border=0 src="checkcode">
3、验证
获取用户输入的验证码,然后从session中获取保存的验证码,对比来确定是否相同,从而完成验证。
发表评论
-
网页之间共享值
2007-03-19 13:49 450Web应用是由大量的网页组成的,运行的基本原理是:用户通过客 ... -
Java Web实践专题——Eclipse中CVS的使用
2007-03-19 14:50 596CVS概述 主要作用是管理代码的版本,尤其是多人协同开发的时 ... -
Eclipse中Web应用的开发
2007-03-30 09:35 502Eclipse中Web应用的开发 应用服务器:tomcat ... -
MVC模式在Java Web中的应用
2007-04-21 22:06 393流行的Java Web应用框架基本上都实现了MVC模型,下面分 ... -
Tomcat中连接池的配置和使用
2007-04-27 13:19 461对于大型网站来说,信 ... -
WebLogic中连接池错误Failed to Generate Wrapper Class的解决方案
2007-05-01 13:25 539很多人在使用Weblogic配置连接池之后,会碰到这样一个 ... -
Sun Java System Appliation Server中连接池的配置
2007-05-01 14:16 4981、准备驱动程序 把 ... -
Java Web中的分页显示——通过界面实现
2007-05-04 23:11 667在界面完成分页控制, ... -
Java Web中的分页显示——在模型中实现
2007-05-04 23:25 461在模型中实现分页显示,主要是在把查询的结果集转换成对象集合的 ... -
NetBeans中的几个快捷方式
2007-06-15 12:38 504几个比较常用的方便代码编写的功能如下: 1、引入用到的类 ... -
最好的Java Web开发的书应该是什么样子?
2007-06-20 14:50 680关于Java Web开发的技术非常多,JSP、Servet、J ... -
JSP培训(1)——概述
2007-08-21 08:35 516本文是JSP培训的笔记,是培训的第一次——概述。 (参考 ... -
JSP培训(2)——运行原理、文档结构、简单输入输出
2007-08-23 09:16 596目标: l 掌握Web应用的文档结构; l 掌握JSP ... -
JSP培训(3)——客户端验证、常用输出方式、JSTL基本用法
2007-08-30 09:49 509目标: l 掌握客户端验证的基本过程; l 掌握 ... -
JSP培训(4)——实例:登录功能、jsp:forward标签、jsp:include标签、include指令、EL、c:if
2007-08-30 09:55 759目标: l 进一步体会JSP应用; l 掌握表达 ... -
JSP培训(5)——使用JavaBean完成业务逻辑
2007-08-31 16:42 496目标: l 掌握什么是JavaBean; l 掌握如何 ... -
JSP培训(6)——使用Servlet作为控制器实现MVC模式
2007-09-04 13:38 609目标: l 初步理解MVC ... -
JSP培训(7)——使用JDBC完成动态验证、采用MVC完成数据查询
2007-09-04 13:43 533目标: l 掌握JDBC链接数据库的基本过程; l 掌 ... -
JSP培训(8)——添加功能和分页显示
2007-09-04 13:46 572学习目标: l 进一步掌握MVC设计模式; l 掌握添 ... -
JSP连接Microsoft SQL Server出错:Error establishing socket解决方法
2007-09-06 14:09 496安装SQL Server的补丁即可。 安装的时候需要注意:第 ...
相关推荐
深入体验Java Web开发内幕——核心基础 深入体验Java Web开发内幕——核心基础
《Java Web开发基础——从Servlet到JSP》源代码v1.0
Java Web开发实践教程——从设计到实现(第2版)(2013年)一书的PPT。
java web笔记之servlet生成验证码java web笔记之servlet生成验证码
java毕业设计——javaC语言试题生成与考试系统的设计与实现(源代码+论文).zip java毕业设计——javaC语言试题生成与考试系统的设计与实现(源代码+论文).zip java毕业设计——javaC语言试题生成与考试系统的设计与...
java实现——登录验证码实例
Java Web开发实践教程——从设计到实现(第2版)(2013年)的源代码。
java毕业设计——java图形图象处理系统的设计与实现(论文+源代码+数据库).zip java毕业设计——java图形图象处理系统的设计与实现(论文+源代码+数据库).zip java毕业设计——java图形图象处理系统的设计与实现(论文+...
本文实例讲述了Java Web开发之图形验证码的生成与使用方法。分享给大家供大家参考。具体如下: 图形验证码的主要目的是为了增强的安全性,增加用户通过遍历所有可能性来破解密码的难度。 图形验证码的使用包括如下3...
有没有发现最后生成了一串长的base64编码 把这一串编码放到img标签在前面加上"data:image/gif;base64,"是能直接使用的 ;base64,(你的base64编码)"/> 验证码最佳宽高计算公式:字体大小和图片高度相等,图片宽度=...
java代码中的图形验证码 源代码,可以嵌入直接使用,里面有部分注释
java毕业设计——java画图形学程序的设计与实现(论文+源代码).zip java毕业设计——java画图形学程序的设计与实现(论文+源代码).zip java毕业设计——java画图形学程序的设计与实现(论文+源代码).zip java毕业设计...
java系图形验证码合集 包括数字计算验证码,中文验证码,简单验证码,复杂条纹验证码
本资源是《Java Web开发教程——入门与提高篇(JSP+Servlet)》一书的源代码,基本上都是采用JSP2.0和MVC模式。
Java_Web快速入门——全十讲 Java_Web快速入门——全十讲
Java Web应用教程——网上购物系统的实现
java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....