- 浏览: 348039 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 796一般的情况下我们都是使用IE或者Navigator浏览器来访问 ... -
Log4j配置详解
2010-11-19 15:36 9441.Log4j日志管理系统简 ... -
C++和JNI的数据转换(3)
2010-09-29 14:58 954Java 测试native代码这没有什么多说的,看代码吧 ... -
C++和JNI的数据转换(2)
2010-09-29 14:49 1072全部的C/C++方法实现代码如下: /**//*** ... -
C++和JNI的数据转换(1)
2010-09-29 14:42 1811<script type="text/java ... -
ANT预编译JSP
2010-09-07 22:27 2551<?xml version="1.0" ... -
java操作Excel(jxl)
2010-08-05 09:27 1123package test;import jxl.*; ... -
什么是Jetty
2010-05-21 17:03 1050Jetty 是一个开源的servlet ... -
使用jetty作为嵌入式web容器(部署war文件)
2010-05-21 16:58 1258由于工作的需要,仓促的摸了一把jetty,觉得jetty在作为 ... -
一段分页代码PaginationSupport.java
2010-05-01 16:37 1299package com.iteye.common.hibern ... -
response.sendRedirect() 的session丢失问题
2010-04-29 10:42 2895使用时response.sendRedirect(),如果 ... -
EHCACHE简介
2010-04-25 19:37 979二级缓存 EHCache是一个 ... -
jFreeChart 在jsp页上实现简单的折线图、柱状图
2010-02-08 14:22 3639创建柱状图 1 引入jFreech ... -
用dom4j实现openfire式导航菜单
2010-01-06 22:26 1638借鉴Openfire项目中 ... -
Jxl简析(二)
2009-11-30 18:31 1051(二)应用 在进行实践前,我们需要对excel ... -
Jxl简析(一)
2009-11-30 18:28 1184最近,完成了一个网上报表系统,刚巧用到了一个JAVA操作exc ... -
Java实现异库多表多字段的同时导入导出
2009-11-28 16:59 1726最近公司做的项目中要求把项目实施单位的原有系统中的表导入到我们 ... -
JavaMail API详解
2009-11-26 16:12 890版权声明:本文可以自由转载,转载时请务必以超链接形式标明文 ... -
FCKeditor 2.6.3与FCKeditor.java 2.4在JSP中配置
2009-11-26 16:08 24291.FCKeditor 介绍 FCKeditor 这个开 ... -
IE6中奇偶中文参数乱码的问题
2009-11-14 12:55 2763form是以post方式传递的,pager-taglib中接受 ...
相关推荐
**JSP为登录生成彩色验证码** 在Web应用中,验证码是一种常见的安全机制,用于防止自动化的机器人或恶意软件进行非法操作,例如批量注册、频繁登录等。本篇将详细介绍如何在JSP环境下创建一个彩色的验证码,以提高...
本项目重点在于使用JSP(Java Server Pages)技术自动生成彩色验证码,为用户提供一个视觉上更友好的验证体验。下面我们将深入探讨这个主题。 首先,验证码通常由一组随机字符组成,这些字符可以是数字、字母或其他...
彩色验证码: 1.原理:随机生成一个包含字符串的图片,用户读取图片中的字符信息,将其输入到指定文本框中,随着登录或者注册功能的提交将其传递给服务器进行验证处理。 2.作用:防止通过程序进行批量注册或者暴力...
本教程将深入讲解如何使用JSP来生成彩色的验证码程序。 一、验证码的基本原理 验证码的主要目的是通过要求用户输入图片上显示的一串随机字符,来验证用户是人而非机器。这些字符通常是扭曲的,以便增加机器识别的...
Java生成彩色验证码是一种常见的安全措施,用于防止自动化脚本或恶意机器人进行非法操作,例如注册、登录等。在Web开发中,JSP(JavaServer Pages)可以用来创建动态的网页内容,包括验证码图像。以下是对标题和描述...
在这个"JSP生成彩色验证码程序例子"中,我们将深入探讨如何利用JSP实现一个功能丰富的彩色验证码生成器。 验证码的主要目的是为了防止自动机器人或恶意脚本进行非法操作,例如防止垃圾邮件、注册机等。它通过显示一...
3. **图像处理**:生成彩色验证码需要我们创建并绘制一个图像。这涉及到`java.awt`和`javax.imageio`包中的类,如`BufferedImage`、`Graphics2D`等。我们需要定义图像的大小,然后在图像上画出随机颜色的背景、线条...
在这个提供的压缩包中,包含的是一个基于Java实现的彩色验证码生成与验证的功能代码,适用于网页安全验证,防止自动机器人或恶意攻击。验证码通常由随机字符组成,目的是确保用户是人类而非自动化程序。 1. **彩色...
3. **彩色背景**:为了增强视觉效果,我们可以为验证码生成彩色背景。可以随机选取RGB颜色值,然后使用`Graphics2D`的`setColor()`方法设置背景色。 4. **绘制字符**:在背景上绘制字符,同样可以设置随机颜色,...
在IT领域,验证码(CAPTCHA)是一种用于验证用户是否为人类的工具,常用于防止自动化的机器人或恶意软件进行非法操作。"优化过的C#彩色验证码"是指使用C#编程语言实现的一种经过优化的彩色图像验证码。这个话题涵盖...
"asp彩色验证码源码"是一个基于ASP实现的验证码功能的源代码,它可能包含了创建随机图形验证码的过程,以及验证用户输入与服务器生成验证码是否匹配的逻辑。 验证码的主要功能是通过图像展示一串随机字符,要求用户...
本文将详细介绍如何在JSP中实现彩色验证码的生成与验证功能。彩色验证码不仅能够提高网站的安全性,还可以提升用户体验。根据文档的要求,我们需要创建三个JSP页面:`image.jsp`用于生成验证码图像,`a.jsp`作为展示...
### 使用JSP生成彩色汉字验证码知识点详解...综上所述,通过使用JSP生成彩色汉字验证码不仅能够有效地增强网站的安全防护能力,还能为用户提供更好的交互体验。开发者可以根据具体需求调整参数,以达到最佳的应用效果。
在IT行业中,验证码是一种常见的安全机制,用于防止自动化的...通过实践,你可以不断优化验证码的生成逻辑,提高其安全性和用户体验。如果你对其他IT资源感兴趣,可以随时进行交流和探讨,共同提升我们的专业技能。
2. **图像处理**:生成彩色验证码需要对图像进行处理。这包括创建一个随机的字符串(通常包含字母和数字),将这些字符以特定方式绘制到图像上,使用不同的颜色、字体和旋转角度以增加识别难度。 3. **色彩选择**:...
在IT行业中,验证码是一种常见的安全机制,用于防止自动化的机器人或恶意软件进行非法操作,例如注册、登录等。本主题将深入探讨“JSP彩色验证码Md5类”,它结合了Java验证码技术和MD5哈希算法,以提高安全性。 ...
标题"jcaptcha做jsp彩色验证码"即指使用jCaptcha库在JSP应用中生成彩色的验证码图片。 首先,我们需要引入jCaptcha的相关依赖。在这个案例中,我们看到压缩包内的"jcaptcha-all-1[1].0-RC6.jar"就是jCaptcha的核心...
在这个特定的案例中,我们关注的是“中文彩色验证码的实现”,这意味着我们要讨论如何创建一种能显示中文字符且带有颜色元素的验证码系统。 中文验证码的实现通常涉及到以下几个关键知识点: 1. **字符生成**:...
以下是一个简单的示例代码,展示如何使用Jcaptcha生成一个彩色验证码: ```java import com.octo.captcha.component.image.backgroundgenerator.RandomListBackgroundGenerator; import ...
验证码是Web应用中常用的一种安全机制,用于防止自动机器人或者恶意攻击者进行非法操作,例如批量注册、恶意登录等。本篇文章将详细讲解基于PHP实现的高安全验证码生成类,以及如何利用字体库来增强其安全性。 ...