- 浏览: 337647 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
pacoson:
感谢楼主。请受小生一拜。
ANT预编译JSP -
zhuhongming123:
一楼的同学Lucene4.* 以上的 已经改成了Numeric ...
Lucene日期排序及组合查询 -
ywjk520:
RangeQuery在哪个包里?
Lucene日期排序及组合查询 -
willwen:
有个疑问,楼主,为何初始化bits 从txt读取已有的网址是直 ...
布隆过滤器(Bloom Filter)之java实例 -
yu_226528:
还不如没有呢
jFreeChart 在jsp页上实现简单的折线图、柱状图
读者可能经常在一些论坛发表帖子或用户登录时要求用户输入验证码,并在验证码输入框后生成了一张验证码的图片,只有验证码输入正确后
才能继续下一步操作,那么使用验证码有什么用处,在JSP中又如何实现呢? Java世界
举个例子,在论坛中发表帖子时,一般的Web程序都是以提交表单形式来提交帖子的内容,接收数据后插入到数据库的表中;如果有人不
怀好意,利用一些自动提交表单的工具来不断的提交表单,则会导致数据库中的数据迅速膨胀,很快就会导致数据库的空间被用光。如果使用
了验证码,由于验证码生成的是图片,程序很难识别出来,而且图片中还可加入干扰,即便是使用了OCR(景像识别)技术也很难识别出来,
当验证码没有通过时,数据就不会被提交到数据库中。 Javaif.Com
为登录生成彩色验证码
本例将在登录页面生成彩色验证码,这样用户在登录时就要输入用户名、密码和验证码,只有三个同时通过才会通过检验。
这里,把生成验证码图片的程序封装为一个JavaBean,这个JavaBean的源代码如下:
makeCertPic.java package pic; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; /** * @author dzy * 生成验证码图片 */ public class makeCertPic { //验证码图片中可以出现的字符集,可根据需要修改 private char mapTable[]={ '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'}; /** * 功能:生成彩色验证码图片 java世界_Javaif.com * 参数width为生成图片的宽度,参数height为生成图片的高度,参数os为页面的输出流 */ public String getCertPic(int width, int height, OutputStream os) { if(width<=0)width=60; if(height<=0)height=20; 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); //画边框 g.setColor(Color.black); g.drawRect(0,0,width-1,height-1); // 取随机产生的认证码 String strEnsure = ""; // 4代表4位验证码,如果要生成更多位的认证码,则加大数值 for(int i=0; i<4; ++i) { strEnsure+=mapTable[(int)(mapTable.length*Math.random())]; } java世界_Javaif.com // 将认证码显示到图像中,如果要生成更多位的认证码,增加drawString语句 g.setColor(Color.black); g.setFont(new Font("Atlantic Inline",Font.PLAIN,18)); String str = strEnsure.substring(0,1); g.drawString(str,8,17); str = strEnsure.substring(1,2); g.drawString(str,20,15); str = strEnsure.substring(2,3); g.drawString(str,35,18); str = strEnsure.substring(3,4); g.drawString(str,45,15); // 随机产生10个干扰点 Random rand = new Random(); for (int i=0;i<10;i++) { int x = rand.nextInt(width); int y = rand.nextInt(height); g.drawOval(x,y,1,1); } // 释放图形上下文 g.dispose(); try { // 输出图像到页面 ImageIO.write(image, "JPEG", os); java世界_Javaif.com } catch (IOException e) { return ""; } return strEnsure; } }
Java世界
在getCertPic()方法中,首先创建了一个内存图像的实例对象,再得到此内存图像的图形上下文对象,接着再用这个上下文对象画背景、
边框。接下来,随机生成4个在mapTable[]数组中的字符,组成字符串作为验证字符串,并输出在内存中,为了造成一定的干扰,随机画了10
个干扰点,如果要加大干扰效果,可再多画一些点。
makeCertPic.jsp页面用于调用生成验证码图片的JavaBean,并在客户端显示,源代码如下:
makeCertPic.jsp
<%@page contentType="image/jpeg" %> <jsp:useBean id="image" scope="page" class="pic.makeCertPic" /> <% Stringstr=image.getCertPic(0,0,response.getOutputStream()); // 将认证码存入SESSION session.setAttribute("certCode", str); %>
Javaif.Com
这里把生成的验证码作为session变量写入,因此在接收登录页面输入的数据页面中,可用用户输入的验证码和这个session变量作比较,
如果相同则表示验证通过。
LoginPic.jsp
<%@ page contentType="text/html;charset=GB2312" %> <html> <head><title>登录页面</title></head> <body> <table align="center" border="0"> <traligntralign="center"><td><fontcolorfontcolor="red"><html:errors/></font></td></tr> <tr align="center"><td>系统登录</td></tr> <form action="loginCheck.jsp" method="post" focus="username"> <tr><td>用户名:<input type="text" name="username"/></td></tr> <tr><td>密 码:<input type="password"name="password"/></td></tr> <tr><td>验证码:<input type="text" name="certCode"/> java世界_Javaif.com <img src="makeCertPic.jsp"> </td></tr> <traligntralign="left"><td> <input type="submit" value="确定"/></td></tr> </form> </table> </body> </html>
登录页面的运行结果如图18-11所示。 www.Javaif.Com
验证码的输入是否正确可用如下语句验证:
String certCode=request.getParameter("certCode"); if(certCode.equals((String)session.getAttribute("certCode"))) out.print("验证码输入正确"); else out.print("验证码输入错误");
发表评论
-
HttpClient 学习整理
2010-12-02 14:05 738一般的情况下我们都是使用IE或者Navigator浏览器来访问 ... -
Log4j配置详解
2010-11-19 15:36 8971.Log4j日志管理系统简 ... -
C++和JNI的数据转换(3)
2010-09-29 14:58 917Java 测试native代码这没有什么多说的,看代码吧 ... -
C++和JNI的数据转换(2)
2010-09-29 14:49 1034全部的C/C++方法实现代码如下: /**//*** ... -
C++和JNI的数据转换(1)
2010-09-29 14:42 1745<script type="text/java ... -
ANT预编译JSP
2010-09-07 22:27 2489<?xml version="1.0" ... -
java操作Excel(jxl)
2010-08-05 09:27 1044package test;import jxl.*; ... -
什么是Jetty
2010-05-21 17:03 1006Jetty 是一个开源的servlet ... -
使用jetty作为嵌入式web容器(部署war文件)
2010-05-21 16:58 1217由于工作的需要,仓促的摸了一把jetty,觉得jetty在作为 ... -
一段分页代码PaginationSupport.java
2010-05-01 16:37 1252package com.iteye.common.hibern ... -
response.sendRedirect() 的session丢失问题
2010-04-29 10:42 2860使用时response.sendRedirect(),如果 ... -
EHCACHE简介
2010-04-25 19:37 942二级缓存 EHCache是一个 ... -
jFreeChart 在jsp页上实现简单的折线图、柱状图
2010-02-08 14:22 3596创建柱状图 1 引入jFreech ... -
用dom4j实现openfire式导航菜单
2010-01-06 22:26 1579借鉴Openfire项目中 ... -
Jxl简析(二)
2009-11-30 18:31 991(二)应用 在进行实践前,我们需要对excel ... -
Jxl简析(一)
2009-11-30 18:28 1152最近,完成了一个网上报表系统,刚巧用到了一个JAVA操作exc ... -
Java实现异库多表多字段的同时导入导出
2009-11-28 16:59 1686最近公司做的项目中要求把项目实施单位的原有系统中的表导入到我们 ... -
JavaMail API详解
2009-11-26 16:12 814版权声明:本文可以自由转载,转载时请务必以超链接形式标明文 ... -
FCKeditor 2.6.3与FCKeditor.java 2.4在JSP中配置
2009-11-26 16:08 23411.FCKeditor 介绍 FCKeditor 这个开 ... -
IE6中奇偶中文参数乱码的问题
2009-11-14 12:55 2681form是以post方式传递的,pager-taglib中接受 ...
相关推荐
java生成验证码源码包括彩色验证码 包括jsp生成验证码和彩色验证码
java 生成彩色验证码的程序,改程序可以极大的帮助你,是你可以自动生成彩色的验证码
jsp下生成的简单彩色验证码 里面的pic文件夹放入jsp建的虚拟目录下的WEB-INF下的classes文件夹下!
JSP自动生成彩色验证码-由2个JSP页面与一个action验证验证码的类构成,code.jsp自动生成4位彩色随机码。index.jsp是登陆页面包含彩色验证码
JSP生成彩色验证码程序
JSP中彩色验证码 注册验证码 中文验证码 图片验证码的生成
JSP生成彩色验证码程序例子
那么对于刷新图片后,session不能立刻保存为新值,验证就永远不能通过,反之js用的是一个全局变量不需要session 这个程序既可以直接验证,也可以点击验证码刷新一个新的验证码(当原来的验证码看不清楚的时候),...
ASP.NET生成图片验证码 ASP.NET生成图片验证码 ASP.NET生成图片验证码
适合于注册验证,功能还可以!
原理:随机生成一个包含字符串的图片,用户读取图片中的字符信息,将其输入到指定文本框中,随着登录或者注册功能的提交将其传递给服务器进行验证处理。 2.作用:防止通过程序进行批量注册或者暴力破解程序登录 3....
验证码是由4位数字随机生成的彩色验证码,而且还可以进行校验输入的验证码是否正确
一个登录验证生成验证码用struts 后台生成验证码在jsp页面输出生成图片
ajax验证码 验证码ajax 生成中文验证码
jsp生成动态验证码,jsp生成动态验证码。
在JSP下,用jcaptcha生成彩色验证码的案例。 主页http://jcaptcha.sourceforge.net/ 网上有很多例子,但有一点没说清楚,这个项目的jar包需要两个apache的项目包,一个是collections,还有一个是logging。 我做了...
HTML实现,有随机生成的验证码+按钮+输入框
JSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txtJSP生成图片验证码.txt
This is a digital graphic verification code written in canvas(这是一个vue的插件,使用canvas来生成图形验证码)
自动随机生成字库,生成中文验证码(内含3000张已生成验证码)