- 浏览: 691435 次
- 来自: ...
文章分类
最新评论
-
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 2146转载:http://hi.baidu.com/yuanaish ... -
jsp及Servlet面试题
2009-06-10 14:40 48701、jsp有哪些内置对象作用分别是什么 答:JSP共有以下9种 ... -
数据源+freemarker+servlet生成xml文件
2009-05-10 12:13 30411.在server.xml文件中建立数据源. <S ... -
FreeMarker 设计指南 - 4
2009-05-10 12:09 1053转载:http://blog.csdn.net/b ... -
FreeMarker 设计指南 - 3
2009-05-10 12:03 1051转载:http://blog.csdn.net/bukebus ... -
FreeMarker 设计指南 - 2
2009-05-10 11:57 959转载:http://blog.csdn.net/bukebus ... -
FreeMarker 设计指南 - 1
2009-05-10 11:54 982转载:http://blog.csdn.net/bukebus ... -
FreeMarker 简介
2009-05-10 11:38 1039转载:http://blog.csdn.net/b ... -
freemarker(5)Include的使用
2009-05-09 15:38 4362转载:http://tech.ddvip.com pack ... -
freemarker(4)&lt;#list 的使用
2009-05-09 15:35 1639转载: packagefreemarker; i ... -
freemarker(3)IF语句的使用
2009-05-09 15:32 4752转载:http://tech.ddvip.com ... -
freemarker(2)给模板传递参数的测试
2009-05-09 15:26 1411转载:http://tech.ddvip.com pa ... -
freemarker(1)老紫竹的第一个freemaker程序
2009-05-09 15:23 891转载:[url]http://tech.ddvip.com [ ... -
JSTL 常用标签属性
2009-04-29 10:35 1406以下属性基于JSTL1.1 一般用途的标签:<c:ou ... -
用自定义标签实现分页
2009-04-24 16:44 1531转载:http://blog.csdn.net/x ... -
如何获取文件属性---java.io.File类
2009-04-03 14:01 5386<%@ page language="ja ... -
用javabean在JSP页面中实现进度条效果
2009-04-03 14:00 4552public class TaskBean extends ... -
jsp中文问题解决方案(完整版)
2009-04-03 13:57 1655开发java应用出现乱码是很常见的,毕竟现在unicode的使 ... -
用Servlet过滤器去除JSP页面中的乱码
2009-04-03 11:48 1235import java.io.IOException; ... -
JSP彩色验证码
2009-04-03 11:30 935<%@ page contentType=" ...
相关推荐
图形验证码(servlet实现)
Servlet动态验证码的生成-带数字和字母 ,具体过程和效果看博文 http://blog.csdn.net/evankaka/article/details/46597435
java web笔记之servlet生成验证码java web笔记之servlet生成验证码
servlet生成验证码图片
使用Servlet生成验证码图片。 一个生成验证码图片的工具类。
jsp servlet 验证码 jsp servlet 验证码 jsp servlet 验证码
使用jsp+servlet生成验证码并刷新验证码
jsp,servlet,验证码,验证码点击更换;jsp,servlet,验证码,验证码点击更换;jsp,servlet,验证码,验证码点击更换;jsp,servlet,验证码,验证码点击更换
java Servlet实现验证码 Servlet实现验证码 Servlet实现验证码
JSP下MVC架构的验证码登陆,验证码单独封装形成,存于session中实现验证
生成验证码,本验证码为Servlet形式,可以凭开发经验,例如在Struts中,将其写在Action的方法中(void类型)从而转为Struts形式,调用时只需使img标签的src属性= 1.(servletname) 2.(methodname_actionname.action)
一个小的例子,里面有纯4位数字验证码,还有大小写字母和数字混合验证码,帮助各位理解验证码的生成原理
servlet实现验证码
Buffalo+servlet实现验证码.doc Buffalo+servlet实现验证码.doc
通过Servlet生成图片验证码,提供给jsp页面展示,并验证。
本代码主要是为了解决通过servlet向前台传送验证码并进行校验。另外还有通过servlet下载各种文件。同时避免中文乱码问题。如果下载后有文件无法启动的问题,请将代码移植到自己的程序中,本代码使用eclipse开发。是...
正在学习Java,在教程书和网上不断的学习。servlet 提供了 Java 强大的 web 交互,在这个小项目中,我用servlet 实现了在web上生成验证码的功能,正在入门Java的同学不妨试试。
用jsp+servlet实现的验证码,很容易的应用到项目中
jsp+ajax+servlet 实现的动态验证码
jsp servlet实现验证码功能 绝对可用!