- 浏览: 167544 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
mengyue0477:
最后还不忘吐槽一下 哈哈 太逗了
spring容器的懒加载lazy-init设置 -
comet0515:
不是maven工程能不能用checkstyle插件?job是一 ...
jenkins 配置checkstyle -
xfxlch:
http://docs.spring.io/spring-bo ...
NoteBook -
With_Me_Forever:
太浅了。我最近也在看着方面的资料,一起进步把。
互联网金融定义 -
xfxlch:
在http://r.m.baidu.com/6pmxgig
NoteBook
项目中看到验证码的生成不是直接用的图片,而是根据自己的properties属性文件用java开发的。
我在这里做一个记录:
一个很简单的应用,就是一个jsp页面来展示一个生成的验证码的图片。
首先来看一下效果:
这个验证码的长度可以根据自己的需要设置成指定的长度。当然,那样的话,图片长高也要相应的做修改。
1.开发环境:IDE:MyEclipse 10 + jdk1.6.0_43 + tomcat-7.0.53
2.新建一个动态的web project。
3.主要涉及到了这么几个文件:
验证码属性配置文件:imgCode.properties
获取配置文件通用类:Config.java
登录验证码配置:RandomConf.java
以及生成验证码的servlet类:VerifyCodeServlet.java
4.主要servlet处理类源码:VerifyCodeServlet.java
后面附上整个项目代码,直接解压,导入myeclipse即可运行
我在这里做一个记录:
一个很简单的应用,就是一个jsp页面来展示一个生成的验证码的图片。
首先来看一下效果:
这个验证码的长度可以根据自己的需要设置成指定的长度。当然,那样的话,图片长高也要相应的做修改。
1.开发环境:IDE:MyEclipse 10 + jdk1.6.0_43 + tomcat-7.0.53
2.新建一个动态的web project。
3.主要涉及到了这么几个文件:
验证码属性配置文件:imgCode.properties
获取配置文件通用类:Config.java
登录验证码配置:RandomConf.java
以及生成验证码的servlet类:VerifyCodeServlet.java
4.主要servlet处理类源码:VerifyCodeServlet.java
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.setProperty("java.awt.headless", "true"); BufferedImage buffImg = new BufferedImage(RandomConf.getWidth(), RandomConf.getHeight(), BufferedImage.TYPE_INT_RGB); Graphics2D g = buffImg.createGraphics(); // g.setColor(Color.WHITE); g.setColor(new Color( RandomConf.getRed(), RandomConf.getGreen(), RandomConf.getBlue())); g.fillRect(0, 0, RandomConf.getWidth()-2, RandomConf.getHeight()-2); Font font = new Font(RandomConf.getFontType(), Font.PLAIN, RandomConf.getFontSize()); g.setFont(font); g.setColor(Color.BLACK); g.drawRect(0, 0, RandomConf.getWidth() - 2, RandomConf.getHeight() - 2); g.setColor(Color.GRAY); Random random = new Random(); for (int i = 0; i < RandomConf.getComplex(); i++) { int x1 = random.nextInt(RandomConf.getWidth()-2); int y1 = random.nextInt(RandomConf.getHeight()-2); int x2 = random.nextInt(10); int y2 = random.nextInt(10); g.drawLine(x1, y1, x1 + x2, y1 + y2);//在点(x1, y1)与点(x1 + x2, y1 + y2)之间画一条线 } StringBuffer randomCode = new StringBuffer(); int red = 0; int green = 0; int blue = 0; // 设置备选验证码:包括"A-Z","a-z","0-9" int size = RandomConf.getRandomChar().length(); Random rand = new Random(); for (int i = 0; i < RandomConf.getLen(); i++) { int start = rand.nextInt(size); String tmpStr = RandomConf.getRandomChar().substring(start, start + 1); red = random.nextInt(110); green = random.nextInt(50); blue = random.nextInt(255); g.setColor(new Color(red,green,blue)); randomCode.append(tmpStr); g.drawString(tmpStr, 13 * i + 6 + rand.nextInt(5), 14 + rand.nextInt(6)); } HttpSession session = request.getSession(); session.setAttribute("randomImgCode", randomCode.toString()); response.setHeader("Pragma", "no-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.setContentType("image/jpeg"); ServletOutputStream outputStream = response.getOutputStream(); ImageIO.write(buffImg, "jpeg", outputStream); outputStream.close(); }
后面附上整个项目代码,直接解压,导入myeclipse即可运行
发表评论
-
eclipse project .setting
2016-08-24 11:30 606有一个文件在.setting的目录下面: 文件名:org.ec ... -
jar命令工具
2016-01-23 20:29 690背景: 今天介绍两个jar的命令工具,对我个人来说,还是比较好 ... -
Java的按值传递
2016-01-23 19:30 565问题: 最近在看Mar ... -
Mac OS 安装java 开发环境
2016-01-03 13:00 1775我的机器是: 1. jdk1.7下载安装 jdk7:h ... -
记一次Java Rest Service Hang住的经历
2015-12-28 20:08 2701背景: 在前后端分开开发的过程中,前段的页面要调用后台Java ... -
一个String字符串的问题2
2015-12-14 14:22 612背景: 今天遇到个问题: String str = & ... -
我读重构这本书
2015-12-01 22:30 0第一点:关注变量命名。好的变量名能让读者更快更好的理解程序到底 ... -
系统log的编写
2015-11-16 09:41 0log很关键,一定要记录好对追踪问题有帮助的日志。 -
CAS 授权问题
2015-11-16 09:40 0CAS 授权问题 -
Caused by: java.lang.UnsupportedOperationException 解决方案
2015-10-21 22:09 4085背景: 今天在跑一个UnitTest,跑的过程中想在list ... -
LogBack 框架里log-access的使用
2015-10-18 16:05 7106背景: 想通过配置log-access来实现直接使用浏览器来访 ... -
how to fix "org.hamcrest.CoreMatchers.containsString cannot be resolved"
2015-09-23 23:12 3031背景: 山姆大叔比较喜欢用一些新的技术和新的特性,最近在jun ... -
java 打印金字塔
2015-08-24 00:53 787背景: 一个同事,面试应聘者喜欢用学校里学过的一个书本或者课后 ... -
纯jsp servlet 实现 upload file功能
2015-08-17 20:35 747本篇主要是简单的实现jsp servlet 的上传文件的功能, ... -
dos 命令窗口執行java 命令,帶包路徑
2015-07-26 12:16 535記錄一下,是為了自己下次再run java命令的時候,可以很快 ... -
tomcat 远程调试
2015-07-23 18:41 491背景: 我们在项目开发过程中,很多时候会遇到这样的情况:项目在 ... -
使用android studio 来开发hello world app的时候,遇到的一些坑。
2015-07-13 01:38 2164使用android studio 来开发h ... -
ThreadLocal
2015-05-11 07:22 427Java线程:深入ThreadLocal ThreadLo ... -
Hibernate Interceptor(拦截器)
2015-04-28 20:30 2428需求: 对所有操作数据库的事件,添加audit log, 此l ... -
eclipse 加入tomcat 包
2015-03-24 01:09 433...
相关推荐
总的来说,Java生成验证码是一个结合了数学随机性、图像处理和安全性考量的过程。通过学习和使用`kaptcha`或其他验证码生成库,开发者能够快速地在自己的项目中实现这一功能。同时,理解和实现验证码的生成也能加深...
这个"java生成验证码demo"提供了生成自定义验证码图片的方法,包括设置图片尺寸、验证码长度,以及添加各种视觉混淆元素,以增加机器识别的难度。 首先,我们要理解验证码的基本原理。它通常由一组随机生成的字母或...
java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...
java生成验证码源码包括彩色验证码 包括jsp生成验证码和彩色验证码
在Java中生成验证码涉及到图像处理、随机数生成以及字符编码等多个知识点。以下将详细介绍如何在Java中创建一个能生成中文、英文和数字的验证码。 1. **随机数生成**:首先,我们需要生成随机的验证码字符。Java...
java生成验证码代码 主要:一个生成验证码的servlet,一个jsp页面,另外还需要配置下web.xml即可
java生成验证码图片的文件已完成测试
### Java生成验证码详解 在数字化世界中,验证码作为一种防止自动化工具进行恶意操作的安全措施,扮演着至关重要的角色。本文将深入探讨如何使用Java语言生成图片验证码,包括代码实现、技术要点及其实现流程。 ##...
### 使用Java生成验证码的深入解析 #### 知识点概览 在当今互联网时代,验证码作为网站和应用程序安全的重要组成部分,被广泛应用于用户登录、表单提交等场景中,以防止自动化工具的恶意操作。本文将详细介绍如何...
总的来说,Java生成验证码涉及图像处理、随机数生成、文本渲染等多个技术点。通过学习和实践,开发者可以创建出既安全又用户体验良好的验证码系统。对于动态GIF验证码,了解并使用第三方库如`gif4j`能简化开发过程。
通过提供的`ValiImgServlet.java`和`login.jsp`文件,我们可以深入理解Java生成验证码的基本流程和关键组件。 首先,`ValiImgServlet.java`是一个Servlet,它负责在服务器端生成验证码图像。在Java中,生成验证码...
使用Java生成验证码的工具类,使用说明:http://blog.csdn.net/wqh8522/article/details/72791218
用于java生成验证码图片的工具类。(源码 .java 文件)
java生成随机验证码, 这是一个demo, eclipse项目,导入eclipse即可