- 浏览: 707687 次
- 来自: ...
文章分类
最新评论
-
ranguisheng:
可以加点注释,代码不便于阅读.
用java实现数据库连接池的一个简单示例 -
abcd880129:
这样写的话,还要用专门的下载工具,不然,只能下到一个为空的ex ...
ZK下载文件时,不在服务器生成文件直接下载 -
234369425:
同上,是20
java计算阶乘 -
CodeToMyLaw:
如果目录中含有中文呢?
[^\x00-\xff] 中文的 ...
js验证文件目录格式的正确性 -
yanzhoupuzhang:
加了,还是报那个错误!
org.apache.commons.dbcp.BasicDataSource的解决方法
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; public class AuthImg extends HttpServlet { // 设置图形验证码中字符串的字体和大小 private Font font = new Font("Arial Black", Font.PLAIN, 16); public void init() throws ServletException { super.init(); } // 生成随机颜色 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); } @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); // 指定图形验证码图片的大小 int width = 100, height = 18; // 生成一张新图片 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(1, 1, width - 1, height - 1); g.setColor(new Color(102, 102, 102)); g.drawRect(0, 0, width - 1, height - 1); g.setFont(font); // 随机生成线条 g.setColor(getRandColor(160, 200)); for (int i = 0; i < 155; i++) { int x1 = random.nextInt(6) + 1; int y1 = random.nextInt(12) + 1; int x2 = random.nextInt(width - 1); int y2 = random.nextInt(width - 1); g.drawLine(x1, y1, x1 + x2, y1 + y2); } // 随机生成线条 for (int i = 0; i < 70; i++) { int x1 = random.nextInt(6) + 1; int y1 = random.nextInt(12) + 1; int x2 = random.nextInt(width - 1); int y2 = random.nextInt(width - 1); g.drawLine(x1, y1, x1 - x2, y1 - y2); } // 该变量用于保存系统生成的随机字符串 String randStr = ""; for (int i = 0; i < 6; i++) { // 获得一个随机字符 String tmp = getRandChar(); randStr += tmp; // 将系统生成的随机字符添加到图形验证码上 g.setColor(new Color(20 + random.nextInt(110), 20 + random .nextInt(110), 20 + random.nextInt(110))); g.drawString(tmp, 15 * i + 10, 15); } HttpSession session = request.getSession(true); // 将系统生成的图形验证码放到Session中 session.setAttribute("rand", randStr); g.dispose(); // 输出图形验证码 ImageIO.write(image, "JPEG", response.getOutputStream()); } // 生成随机字符 private String getRandChar() { int rand = (int) Math.round(Math.random() * 2); long itmp = 0; char ctmp = '\u0000'; // 根据rand的值来决定来生成一个大写字母、小写字母和数字 switch (rand) { // 生成大写字母 case 1: itmp = Math.round(Math.random() * 25 + 65); ctmp = (char) itmp; return String.valueOf(ctmp); // 生成小写字母 case 2: itmp = Math.round(Math.random() * 25 + 90); ctmp = (char) itmp; return String.valueOf(ctmp); // 生成数字 default: itmp = Math.round(Math.random() * 9); return String.valueOf(itmp); } } } 页面上调用: 请输入验证码: <input type="text"> <img src="AuthImg" id="authImg" onclick="this.src='AuthImg?now='+new Date()" alt="点击刷新" >
评论
3 楼
天涯之海
2009-12-16
我在面页调用时,怎么取出来的值总是上一次的啊?
而且第一次取的值是空的
而且第一次取的值是空的
2 楼
unique_hxl
2009-09-07
getRandChar()方法有点问题,我来纠正一下: // 生成随机字符 private String getRandChar() { int rand = (int) Math.round(Math.random() * 2); char ctmp = '\0'; // 根据rand的值来决定来生成一个大写字母、小写字母和数字 switch (rand) { // 生成大写字母 case 1: ctmp = (char)('A' + Math.random() * ('Z' - 'A' + 1)); return String.valueOf(ctmp); // 生成小写字母 case 2: ctmp = (char)('a' + Math.random() * ('z' - 'a' + 1)); return String.valueOf(ctmp); // 生成数字 default: ctmp = (char)('0' + Math.random() * ('9' - '0' + 1)); return String.valueOf(ctmp); } }
1 楼
unique_hxl
2009-09-07
getRandChar()方法有点问题,我来纠正一下:
// 生成随机字符
private String getRandChar() {
int rand = (int) Math.round(Math.random() * 2);
char ctmp = '\0';
// 根据rand的值来决定来生成一个大写字母、小写字母和数字
switch (rand) {
// 生成大写字母
case 1:
ctmp = (char)('A' + Math.random() * ('Z' - 'A' + 1));
return String.valueOf(ctmp);
// 生成小写字母
case 2:
ctmp = (char)('a' + Math.random() * ('z' - 'a' + 1));
return String.valueOf(ctmp);
// 生成数字
default:
ctmp = (char)('0' + Math.random() * ('9' - '0' + 1));
return String.valueOf(ctmp);
}
}[size=small][/size]
// 生成随机字符
private String getRandChar() {
int rand = (int) Math.round(Math.random() * 2);
char ctmp = '\0';
// 根据rand的值来决定来生成一个大写字母、小写字母和数字
switch (rand) {
// 生成大写字母
case 1:
ctmp = (char)('A' + Math.random() * ('Z' - 'A' + 1));
return String.valueOf(ctmp);
// 生成小写字母
case 2:
ctmp = (char)('a' + Math.random() * ('z' - 'a' + 1));
return String.valueOf(ctmp);
// 生成数字
default:
ctmp = (char)('0' + Math.random() * ('9' - '0' + 1));
return String.valueOf(ctmp);
}
}[size=small][/size]
发表评论
-
Request用法
2009-06-10 14:42 2187转载:http://hi.baidu.com/yuanaish ... -
jsp及Servlet面试题
2009-06-10 14:40 49121、jsp有哪些内置对象作用分别是什么 答:JSP共有以下9种 ... -
数据源+freemarker+servlet生成xml文件
2009-05-10 12:13 30721.在server.xml文件中建立数据源. <S ... -
FreeMarker 设计指南 - 4
2009-05-10 12:09 1084转载:http://blog.csdn.net/b ... -
FreeMarker 设计指南 - 3
2009-05-10 12:03 1103转载:http://blog.csdn.net/bukebus ... -
FreeMarker 设计指南 - 2
2009-05-10 11:57 988转载:http://blog.csdn.net/bukebus ... -
FreeMarker 设计指南 - 1
2009-05-10 11:54 1038转载:http://blog.csdn.net/bukebus ... -
FreeMarker 简介
2009-05-10 11:38 1064转载:http://blog.csdn.net/b ... -
freemarker(5)Include的使用
2009-05-09 15:38 4416转载:http://tech.ddvip.com pack ... -
freemarker(4)&lt;#list 的使用
2009-05-09 15:35 1670转载: packagefreemarker; i ... -
freemarker(3)IF语句的使用
2009-05-09 15:32 4781转载:http://tech.ddvip.com ... -
freemarker(2)给模板传递参数的测试
2009-05-09 15:26 1456转载:http://tech.ddvip.com pa ... -
freemarker(1)老紫竹的第一个freemaker程序
2009-05-09 15:23 927转载:[url]http://tech.ddvip.com [ ... -
JSTL 常用标签属性
2009-04-29 10:35 1441以下属性基于JSTL1.1 一般用途的标签:<c:ou ... -
用自定义标签实现分页
2009-04-24 16:44 1565转载:http://blog.csdn.net/x ... -
如何获取文件属性---java.io.File类
2009-04-03 14:01 5425<%@ page language="ja ... -
用javabean在JSP页面中实现进度条效果
2009-04-03 14:00 4612public class TaskBean extends ... -
jsp中文问题解决方案(完整版)
2009-04-03 13:57 1720开发java应用出现乱码是很常见的,毕竟现在unicode的使 ... -
用Servlet过滤器去除JSP页面中的乱码
2009-04-03 11:48 1257import java.io.IOException; ... -
JSP彩色验证码
2009-04-03 11:30 961<%@ page contentType=" ...
相关推荐
本篇文章将深入探讨如何使用Servlet技术来实现图形验证码的生成与验证。 首先,我们需要了解Servlet。Servlet是Java EE中的一部分,它是一个服务器端的Java应用程序,主要用于处理HTTP请求。在图形验证码的实现中,...
- **安全性**:为了增加破解难度,验证码应具有一定的复杂性,比如使用大小写字母、数字甚至特殊字符的组合,并且每次登录都应生成新的验证码。 - **有效期**:验证码应该有时间限制,过期后无效,防止被恶意用户...
在这里,我们可以根据请求参数调整验证码的字符数量、图像尺寸和类型(数字、字母或混合)。 5. **图像处理**:使用Java的`java.awt`和`java.awt.image`包,我们可以创建和操作图像。`BufferedImage`类用于创建内存...
2. **生成随机字符串**:在Servlet中,我们需要生成一个随机字符串,通常包含字母和数字,长度在4到6位之间。可以使用`java.util.Random`和`java.lang.Character`类来实现。 3. **绘制验证码图像**:生成字符串后,...
验证码通常由随机字符组成,这些字符可以是数字、字母或特殊符号,有时还会加入背景噪声或扭曲效果以增加识别难度。在本例中,验证码是通过以下步骤生成的: 1. **定义字符集**:如`"avsdkjiew.@R%12460yery"`,...
同时,Servlet可能还会利用Java的图形库(如Java2D)来绘制验证码图像,并将其以流形式返回到客户端。 **验证码的实现流程** 1. 用户打开含有验证码的网页,JSP生成初始的随机验证码并显示为图像。 2. 用户如果需要...
首先,JavaScript通常在客户端运行,它可以生成随机的图形验证码并在网页上显示。这个过程涉及以下几个步骤: 1. **生成随机字符串**:JavaScript可以生成一个包含字母、数字或其他特殊字符的随机字符串。这个字符...
在"使用Servlet生成图片验证码"这个主题中,我们首先会创建一个Servlet来生成随机的字母和数字组合,通常包含4到6位。这可以通过Java的Random类和Character类来实现。验证码生成后,将其保存在服务器的内存中,以便...
在Servlet中,我们可以创建一个方法生成这样的字符串,通常包含字母和数字的组合。这个字符串会被存储在服务器端,例如放在session中,同时显示在客户端的JSP页面上供用户验证。 ```java // Servlet中的方法 public...
本话题主要围绕如何使用Servlet技术来实现一个简单的图形验证码。 Servlet是Java EE平台中用于处理HTTP请求的服务端组件。在这里,我们将讨论如何通过Servlet生成随机字符串,并将其转化为图像输出到客户端,以此...
这种类型的验证码通常称为图形验证码。 实现Servlet验证码的步骤大致如下: 1. **生成随机字符串**:首先,我们需要生成一段随机的字符串,这个字符串将是验证码的内容。长度通常为4-6位,包含字母和数字,确保...
在Java中,可以使用`Random`类或者`SecureRandom`类生成随机数,然后根据需要转化为字符,比如数字和字母的组合。 2. **编码与颜色填充**:生成的随机字符串需要转换为图像,通常使用`java.awt`和`javax.imageio`...
本示例通过使用Buffalo框架和Servlet来实现一个简单的图形验证码功能。下面将详细介绍这个实现过程中的关键知识点。 1. **Buffalo框架**:Buffalo是一个轻量级的Java服务框架,它提供了一种简单的方式来处理HTTP...
【图形验证码(jsp实现)】 在网络安全领域,图形验证码(CAPTCHA)是一种广泛使用的安全机制,用于防止自动机器人或恶意脚本对网站进行非法操作,如注册、登录、发布评论等。图形验证码要求用户在输入框中正确识别并...
1. **随机生成验证码**:验证码通常由一组随机生成的字母、数字或两者组合而成,长度一般为4到6位。在Servlet中,我们可以使用`Random`类和`StringBuilder`来生成这种字符串。 ```java import java.util.Random; ...
在Java Web开发中,我们可以使用Servlet和JSP来实现一个简单的图形验证码。以下将详细介绍如何利用这两个技术进行验证码的实现。 首先,理解验证码的基本原理:验证码是一种通过图像显示随机字符或数字的方式,用户...
**JSP图形验证码详解** 在Web开发中,图形验证码(CAPTCHA)是一种常见的安全机制,用于防止自动化的机器人或恶意程序进行非法操作,如垃圾邮件发送、账户注册等。JSP(JavaServer Pages)作为Java Web开发的重要...
图形验证码通常由随机数字或字母组成,并且通过图像的形式展示给用户。为了防止自动化程序识别这些字符,图像通常会添加一些干扰元素,如线条、点等。下面我们将具体介绍如何在JSP中实现这一功能。 #### 四、具体...