- 浏览: 281741 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
iceblue123:
厉害,太感谢楼主了,第二种方法威武!
spring MVC 3.2中@ResponseBody返回乱码的完美解决方案 -
gaozi131:
感谢啊 折腾了一下午搞定
spring MVC 3.2中@ResponseBody返回乱码的完美解决方案 -
yenshen:
找了半天,问题终于解决了,感谢!
spring MVC 3.2中@ResponseBody返回乱码的完美解决方案 -
笑闯天下:
感觉效率不是很高啊 ,如果从数据库中取到的数据 还要去自己拼接 ...
java导出CSV文件 -
ajonjun:
http://viralpatel.net/
解决ckeditor html不显示,ckeditor 自动过滤html
PictureCheckCode.java import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.geom.Line2D; 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; import com.tools.MD5; public class PictureCheckCode extends HttpServlet{ private static final long serialVersionUID = 1L; private Random rand=new Random(); /** * 生成随机颜色 * * @param start [int] * @param end [int] * @return Color [object] */ public Color getRandColor(int start,int end){ int randNum; if(start>255) start=255; if(end>255) end=255; if(start>end) randNum=start-end; else randNum=end-start; int r=start+rand.nextInt(randNum); int g=start+rand.nextInt(randNum); int b=start+rand.nextInt(randNum); return new Color(r,g,b); } /** * 着色\旋转\缩放 * * @param word 文字 * @param g 图片对象 */ public void coloredAndRotation(String word,int i,Graphics g){ /**着色**/ g.setColor(new Color(20+rand.nextInt(110),20+rand.nextInt(110),20+rand.nextInt(110))); /**旋转**/ Graphics2D g2d=(Graphics2D)g; AffineTransform trans=new AffineTransform(); trans.rotate(rand.nextInt(45)*3.14/180,15*i+8,7); /**缩放**/ float scaleSize=rand.nextFloat()+0.8f; if(scaleSize>1f) scaleSize=1f; trans.scale(scaleSize, scaleSize); g2d.setTransform(trans); g.drawString(word,15*i+20,20); } /** * 生成100条干扰线 * * @param g2d * @param width * @param height */ public void getRandLine(Graphics2D g2d,int width,int height){ for(int i=0;i<100;i++){ int x=rand.nextInt(width-1); int y=rand.nextInt(height-1); int z=rand.nextInt(6)+1; int w=rand.nextInt(12)+1; BasicStroke bs=new BasicStroke(2f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL); Line2D line=new Line2D.Double(x,y,x+z,y+w); g2d.setStroke(bs); g2d.draw(line); } } /** * 获取随机文字 * * @param length [int] 验证码长度 * @param g [Graphics] 图片对象 * @return String * @case1:A-Z * @case2:chinese * @default:0-9 */ @SuppressWarnings("unused") public String getRandWord(int length,Graphics g){ String finalWord="",firstWord=""; int tempInt=0; String[] array={ "0","1","2","3", "4","5","6","7", "8","9","a","b", "c","d","e","f"}; for(int i=0;i<length;i++){ switch(rand.nextInt(2)){ case 1: tempInt=rand.nextInt(26)+65; firstWord=String.valueOf((char)tempInt); break; /*case 2: int r1,r2,r3,r4; String strH,strL;//high&low r1=rand.nextInt(3)+11; //前闭后开[11,14) if(r1==13){ r2=rand.nextInt(7); }else{ r2=rand.nextInt(16); } r3=rand.nextInt(6)+10; if(r3==10){ r4=rand.nextInt(15)+1; }else if(r3==15){ r4=rand.nextInt(15); }else{ r4=rand.nextInt(16); } strH=array[r1]+array[r2]; strL=array[r3]+array[r4]; byte[] bytes=new byte[2]; bytes[0]=(byte)(Integer.parseInt(strH,16)); bytes[1]=(byte)(Integer.parseInt(strL,16)); firstWord=new String(bytes); break;*/ default: tempInt=rand.nextInt(10)+48; firstWord=String.valueOf((char)tempInt); break; } finalWord+=firstWord; this.coloredAndRotation(firstWord,i, g); } return finalWord; } 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; int height=40; BufferedImage image=new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics g=image.getGraphics(); Graphics2D g2d=(Graphics2D)g; Font mFont=new Font("宋体",Font.BOLD,22); g.setColor(this.getRandColor(200,250)); g.fillRect(0, 0, width, height); g.setFont(mFont); g.setColor(this.getRandColor(180,200)); this.getRandLine(g2d, width, height); String randCode=this.getRandWord(4, g); HttpSession session=request.getSession(); session.setAttribute("randCode",MD5.code(randCode.toLowerCase())); g.dispose(); ImageIO.write(image,"JPEG",response.getOutputStream()); } }
发表评论
-
自己写的分页实体类
2015-01-04 20:18 945public class Pager implements ... -
解决Spring MVC用AOP处理事务不起作用的问题
2014-10-31 09:50 26211、Spring MVC 和 Spring 整合的时候,Spr ... -
activiti5.14 扩展用户自定义表
2014-04-30 17:26 8592因项目需要需求,在网上找了很多关于activiti扩展用户 ... -
某快递公司的面试题
2013-06-25 10:13 9731. 重写和重载的区 ... -
利用ant编译发布打包jar文件和打包api文档为rar文件
2011-04-15 14:26 1991首先在build.properties文件中配置好发布时的路径 ... -
将输入流InputStream转换为String
2011-04-15 00:21 3800最近项目中用apache的httpclient中get ... -
Ant的配置与测试
2011-04-13 01:02 975Ant是Java平台下非常棒的批处理命令执行程序,能非常 ... -
java导出CSV文件
2010-11-24 22:09 20018最近有个项目要将数据库中查出来的数据导出到CSV文件,晚上抽时 ... -
set、List、map的区别
2010-08-04 23:59 1803List接口对Collection进行了简单的扩充,Lis ... -
有关Java多线程程序设计
2010-07-28 09:41 871一:理解多线程 多线程是这样一种机制,它允许在 ... -
一个java程序员应该具备的能力和知识
2010-07-23 00:05 1217目前,JAVA是开发人员的热宠,很多论坛都有不少热爱JAVA的 ... -
Hibernate+Spring+Struts2整合开发中的一个分页显示方案
2010-03-06 22:39 13591、DAO层接口的设计,在MemberDao接口中定义了如下两 ... -
java 快速排序
2010-02-10 00:02 818public class Qsort{ public ... -
java 插入排序
2010-02-10 00:02 1024public class InsertSort{ p ... -
java希尔排序
2010-02-10 00:01 1254public class InsertSort{ p ... -
打印杨辉三角
2010-02-09 23:59 1129public class Syanghui{ pu ... -
java连接Oracle数据库代码
2010-02-09 23:47 1117public class test { /** * @ ... -
java连接mysql数据库代码
2010-02-09 23:46 1414public class MySQLTest { /** ... -
23种设计模式
2010-02-02 23:43 927设计模的示例,完整的请下载附件. 谢谢 -
用commons-fileupload-1.2 实现文件上传
2009-12-22 23:35 2345前几天搞文件上传, Google到了Apache 的 comm ...
相关推荐
总的来说,Java生成验证码是一个结合了数学随机性、图像处理和安全性考量的过程。通过学习和使用`kaptcha`或其他验证码生成库,开发者能够快速地在自己的项目中实现这一功能。同时,理解和实现验证码的生成也能加深...
java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...
这个"java生成验证码demo"提供了生成自定义验证码图片的方法,包括设置图片尺寸、验证码长度,以及添加各种视觉混淆元素,以增加机器识别的难度。 首先,我们要理解验证码的基本原理。它通常由一组随机生成的字母或...
java生成验证码源码包括彩色验证码 包括jsp生成验证码和彩色验证码
在Java中生成验证码涉及到图像处理、随机数生成以及字符编码等多个知识点。以下将详细介绍如何在Java中创建一个能生成中文、英文和数字的验证码。 1. **随机数生成**:首先,我们需要生成随机的验证码字符。Java...
Java生成算数运算中文图片验证码的实现,结合了编程语言、图像处理和安全验证的多种技术,为用户提供了一种既安全又友好的验证方式。下面我们将深入探讨这个主题。 首先,验证码的核心是生成随机的算数运算表达式。...
java生成随机验证码, 这是一个demo, eclipse项目,导入eclipse即可
首先,我们来看标题"java生成图片验证码"。这个标题暗示我们将探讨的是在Java环境中生成随机的、可读性较差的文本,并将其转化为图像的过程,以创建一个验证码。验证码通常由字母、数字或两者混合组成,设计的目的...
在Java中,生成验证码的步骤包括: 1. **设计验证码内容**:首先,我们需要创建一个包含随机字符或数字的字符串。可以使用`java.util.Random`类生成随机数,并结合字符数组生成随机字符串。为了增加难度,通常会...
该工具类使用随机字符生成验证码,并支持自定义验证码长度和字体样式。生成的验证码图片背景透明,线条清晰,可轻松辨认。本源码包含了工具类源码及调用示例,可供开发者参考使用,集成到您的项目中。
- **安全性**:可以考虑使用更复杂的算法生成验证码,如汉字、自定义图形等,提高机器识别的难度。 - **用户体验**:减少动画帧数,避免过于复杂的干扰元素,确保验证码清晰易读。 - **可配置性**:允许开发者...
java生成验证码代码 主要:一个生成验证码的servlet,一个jsp页面,另外还需要配置下web.xml即可
在IT领域,验证码(CAPTCHA)是一...在提供的压缩包文件“图片验证码生成”中,可能包含了实现上述功能的源代码示例,你可以通过学习和理解这些代码,加深对Java生成图片验证码的理解,并根据实际需求进行调整和优化。
验证码(CAPTCHA)是一种用于验证用户是否为人类的自动化测试技术。...以上就是使用Java生成验证码的基本流程和关键知识点。通过调整各种参数和细节,可以根据实际需求定制出更复杂、更难被机器识别的验证码系统。
java生成验证码图片的文件已完成测试
Java随机生成验证码图片,适用于web登录验证等。个人觉得很不错~
验证码是网络应用中常见的一种安全机制,用于防止自动...总的来说,Java生成随机验证码的过程涵盖了随机数生成、字符串处理、图像处理等多个编程领域。通过合理的设计和实现,可以创建出既安全又用户友好的验证码系统。
70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java验证码生成.zip70.java...
生成验证码.java 生成四位验证码的Java源代码,欢迎下载使用!