- 浏览: 148515 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
flyingcatjj:
很适合我这种刚接触的
myeclipse xfire 开发webservice实例 -
tangzlboy:
非常好,非常详细,非常中用。
linux入门 -
yzz9i:
楼主说的很是详细。
myeclipse xfire 开发webservice实例 -
zqx888191:
很再理阿!
老程序员的教诲 -
simplecat123:
...
SQLite数据读取
java实现图片验证码 ImageGenerator 生成一张包含四位随机数的图片 Java代码 package com.my.page; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 这个class主要实现随机生成一个4位数的验证码,并写入session, */ public class ImageGenerator extends HttpServlet { private static 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); } private static String charsLong = "23456789abcdefghjklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ"; private static String charsShort = "0123456789"; private static String chars = charsLong; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) { try { int charsLength = chars.length(); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); int width = 75, 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.ITALIC, height)); g.setColor(getRandColor(160, 200)); for (int i = 0; i < 35; 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); } StringBuilder sRand = new StringBuilder(); String[] fontNames = { "Times New Roman", "Arial", "Book antiqua", "" }; for (int i = 0; i < 4; i++) { g.setFont(new Font(fontNames[random.nextInt(3)], Font.ITALIC, height)); char rand = chars.charAt(random.nextInt(charsLength)); sRand.append(rand); g.setColor(new Color(20 + random.nextInt(110), 20 + random .nextInt(110), 20 + random.nextInt(110))); g.drawString(String.valueOf(rand), 16 * i + random.nextInt(6) + 3, height - random.nextInt(4)); } g.setColor(getRandColor(160, 200)); for (int i = 0; i < 19; i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(width); int yl = random.nextInt(width); g.drawLine(x, y, x + xl, y + yl); } request.getSession().setAttribute("Login_Image_Code", sRand.toString()); g.dispose(); try { Thread.sleep(100); } catch (Exception ex) { } OutputStream os = response.getOutputStream(); ImageIO.write(image, "JPEG", os); os.flush(); os.close(); } catch (Exception ex) { } } } package com.my.page; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.OutputStream; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 这个class主要实现随机生成一个4位数的验证码,并写入session, */ public class ImageGenerator extends HttpServlet { private static 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); } private static String charsLong = "23456789abcdefghjklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ"; private static String charsShort = "0123456789"; private static String chars = charsLong; @Override public void doGet(HttpServletRequest request, HttpServletResponse response) { try { int charsLength = chars.length(); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); int width = 75, 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.ITALIC, height)); g.setColor(getRandColor(160, 200)); for (int i = 0; i < 35; 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); } StringBuilder sRand = new StringBuilder(); String[] fontNames = { "Times New Roman", "Arial", "Book antiqua", "" }; for (int i = 0; i < 4; i++) { g.setFont(new Font(fontNames[random.nextInt(3)], Font.ITALIC, height)); char rand = chars.charAt(random.nextInt(charsLength)); sRand.append(rand); g.setColor(new Color(20 + random.nextInt(110), 20 + random .nextInt(110), 20 + random.nextInt(110))); g.drawString(String.valueOf(rand), 16 * i + random.nextInt(6) + 3, height - random.nextInt(4)); } g.setColor(getRandColor(160, 200)); for (int i = 0; i < 19; i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(width); int yl = random.nextInt(width); g.drawLine(x, y, x + xl, y + yl); } request.getSession().setAttribute("Login_Image_Code", sRand.toString()); g.dispose(); try { Thread.sleep(100); } catch (Exception ex) { } OutputStream os = response.getOutputStream(); ImageIO.write(image, "JPEG", os); os.flush(); os.close(); } catch (Exception ex) { } } } 在web.xml加入一下内容 Java代码 <servlet> <servlet-name>imageGenerator</servlet-name> <servlet-class>com.my.page.ImageGenerator</servlet-class> </servlet> <servlet-mapping> <servlet-name>imageGenerator</servlet-name> <url-pattern>/image.jpg</url-pattern> </servlet-mapping> <servlet> <servlet-name>imageGenerator</servlet-name> <servlet-class>com.my.page.ImageGenerator</servlet-class> </servlet> <servlet-mapping> <servlet-name>imageGenerator</servlet-name> <url-pattern>/image.jpg</url-pattern> </servlet-mapping> 运用 Java代码 <input type="text" class="txt" wicket:id="validate"/><br/> <img src="image.jpg" onclick= "this.src= 'image.jpg? '+(new Date()) "/> 其中onclick事件作用是:单击该验证图片,进行刷新,实现看不清换一张的效果
发表评论
-
jdk 1.4和1.5的区别
2011-04-30 02:07 851从语法层面上讲。 1,1.5增加并发包(java.util ... -
tomcat5.5连接池的配置
2011-04-28 01:35 643将数据库驱动程序的JAR文件放在Tomcat的 common/ ... -
GET与POST区别
2011-04-28 01:26 642GET与POST区别 HTTP定义了与服务器交互的不同方 ... -
Java 面试中关于截取字符串例子
2011-04-28 01:23 1168面试中,关于字符串问 ... -
properties 文件中获取数据库连接
2011-04-28 01:12 10451首先建立配置文件 必须跟连接的类放在一块 便于读取 DB.p ... -
cook的使用(两星期自动登录)
2011-04-28 00:59 1044写道 导读: 现在很多网站都有为用户保存登陆信息(即保存 ... -
java.lang.OutOfMemoryError: Java heap space
2011-04-26 12:51 802在进行大数据量操作的时候,经常会出现内存溢出的错误,如 ... -
字符转换
2011-04-26 12:49 674写道 int -> String int i=1234 ... -
Vector用法小结
2011-04-26 12:39 709/** * 演示Vector的使用。包括Vector的创建 ... -
JDK1.5中for循环
2011-04-26 12:37 805写道 JDK1.5中增加了增强的for循环,也就是for的那 ... -
java的疑惑帖子原文
2011-03-24 13:08 653写道 (1) http://jiangzhengjun.it ... -
谈谈重构
2011-03-24 13:04 677最近阅读Martin Flower的《 ...
相关推荐
在ASP.NET中,无刷新生成图片验证码是一项常用的技术,它用于增强网站...以上就是ASP.NET中无刷新生成图片验证码的主要步骤和技术要点。通过理解并实践这些知识点,开发者可以创建出既安全又用户体验良好的验证码系统。
总的来说,Java的`java.awt`包提供了丰富的功能来创建和绘制图片,这使得我们可以方便地实现图片验证码的生成和刷新。结合HTTP协议和服务器端编程,我们可以构建出高效且安全的图片验证码系统,为网站提供有效的防护...
- 为了提升用户体验,可以添加刷新验证码的按钮,点击后更新图片及Session中的验证码。 - 考虑使用AJAX异步验证,用户输入验证码后立即给出反馈,而不需要等待整个表单提交。 6. **安全考虑**: - 验证码应有...
本教程将详细讲解如何在Android项目中实现图片验证码的功能。 首先,理解图片验证码的基本原理。验证码通常由一串随机字符组成,这些字符被扭曲、旋转、加噪,以增加机器识别的难度。用户需要正确输入显示的字符...
实现无刷新图片改变if (String.Compare(Request.Cookies["yzmcode"].Value,txtcode.Text.Trim(), true) != 0) try { //生成随机生成器 Random random = new Random(); //清空图片背景色 g.Clear(Color.White);...
### ASP.NET AJAX 实现无刷新验证码的详细解析 在现代Web开发中,验证码(CAPTCHA)作为用户身份验证的一种手段,被广泛应用于登录界面、表单提交等场景中,用以区分人类用户与自动化程序。传统的验证码加载方式...
使用JavaScript的`XMLHttpRequest`对象或者jQuery的`$.ajax`方法,可以向服务器发送异步请求,获取新的验证码图片URL,然后动态更新页面上的验证码图片源,而无需整个页面重新加载。 5. **session管理**:为了验证...
服务器返回新图像的二进制数据,前端接收到后更新img标签的src属性,实现图片的无刷新更换。 5. **验证过程**:用户输入验证码后,前端将输入值与服务器保存的验证码进行比对。如果匹配,则发送用户请求的操作数据...
本篇文章将深入探讨如何在IT领域中通过读取文件流来动态实现验证码的生成。 首先,验证码的生成通常涉及以下几个步骤: 1. **随机生成数字或字母**:验证码的内容通常由随机的数字和/或字母组成。我们可以使用编程...
总之,ASP.NET中的图片验证码通过结合服务器端的验证码生成逻辑和客户端的无刷新交互,提供了一种有效且用户体验良好的安全验证方式。通过理解和实现这样的验证码,开发者可以增强网站的安全性,同时提高用户在填写...
本项目名为“随机验证码(可刷新)”,它使用Java编程语言结合Servlet技术来实现一个动态生成并可刷新的验证码功能。这个功能尤其适用于Web应用,确保每次用户请求时都能得到一个新的、独一无二的验证码。 首先,...
3. 前端Vue组件:创建一个Vue组件,用于显示验证码图片,并提供刷新验证码和提交验证码的功能。使用axios向后端发送请求,获取和验证验证码。 4. Redis配置:确保Redis服务运行正常,并在Spring Boot中配置Redis...
【描述】 简单的验证码图片点击后实现图片刷新意味着当用户点击验证码图片时,无需页面整体刷新,图片会动态更新。这样做可以提高用户体验,因为用户不需要等待整个页面重新加载只是为了获取一个新的验证码。而...
在探讨“RichFaces中的ajax组件实现刷新验证码”的技术细节时,我们首先需要理解RichFaces框架以及AJAX在其中的应用。RichFaces是一个基于JavaServer Faces(JSF)的开源UI组件库,它提供了丰富的用户界面组件,包括...
通过此插件,用户只需点击验证码图片即可实现验证码的刷新,而无需重新加载整个页面,从而保持了表单数据的完整性。 描述部分提到了在表单验证过程中遇到的不便,即当用户需要验证其输入时,通常需要刷新页面以获取...
在本主题中,我们将深入探讨如何使用JavaScript实现一个页面动态验证码。验证码的主要目的是防止自动化的机器人程序对网站进行恶意操作,例如批量注册、垃圾评论等。 验证码通常包括一些随机生成的字符或数字,用户...
然而,随着技术的发展,验证码的形式也变得越来越多样化,其中包括图片验证码、滑动验证码、点击验证码等。 在HTML5中,我们可以利用Canvas元素来生成和展示验证码。Canvas是HTML5的一个重要特性,它允许开发者在...
而在JSP技术中实现验证码的刷新功能,不仅可以提升用户体验,还能进一步增强系统的安全性。 #### 一、验证码的基本原理 验证码的主要目的是区分操作是由人类还是由计算机程序完成的。常见的验证码类型包括文本型...
图片验证码相比其他类型(如音频验证码、滑动验证码)具有直观、易于理解和实现的优点。它们可以有效地阻止大部分自动脚本,同时对正常用户干扰较小。 3. **简单易用的js验证码插件** 描述中的“js验证码插件”指...
这通常通过Ajax技术实现,如使用jQuery库发送异步请求到服务器,服务器返回新的验证码图像,然后JavaScript更新页面上的验证码图片。 验证过程发生在用户点击登录按钮后,服务器端代码会检查输入的验证码是否与之前...