资源描述:
《基于j2ee web组件技术的课程设计实训项目——《bbs论坛系统》——实现表单中图形验证码的功能》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、杨教授大学堂精心创作的优秀程序员职业提升必读系列资料基于J2EEWeb组件技术的课程设计实训项目——《BBS论坛系统》——实现表单中图形验证码的功能1.1.1实现图形验证码功能1、添加一个实现验证码功能的JavaBean组件类(1)类名称为VerifyCodeBean,包名称为com.px1987.webbbs.util(2)编程该JavaBeanpackagecom.px1987.webbbs.util;importjava.awt.*;importjava.awt.image.*;importjava.util.*;importjavax.imageio.*;publicc
2、lassVerifyCodeBean{杨教授大学堂,版权所有,盗版必究。9/9页杨教授大学堂精心创作的优秀程序员职业提升必读系列资料Randomrandom=null;intwidth,height;StringrandVerifyCode;//存储随机产生的认证码(4位数字)publicVerifyCodeBean(){width=60;height=20;randVerifyCode="";random=newRandom();//生成随机类}publicvoidsetWidth(intnewWidth){width=newWidth;}publicintgetWidth(
3、){returnwidth;}publicvoidsetHeight(intnewHeight){height=newHeight;}publicintgetHeight(){returnheight;}ColorgetRandColor(intforegroundColor,intbackgroundColor){//给定范围获得随机颜色if(foregroundColor>255){foregroundColor=255;}if(backgroundColor>255){backgroundColor=255;}intr=foregroundColor+random.nex
4、tInt(backgroundColor-foregroundColor);杨教授大学堂,版权所有,盗版必究。9/9页杨教授大学堂精心创作的优秀程序员职业提升必读系列资料intg=foregroundColor+random.nextInt(backgroundColor-foregroundColor);intb=foregroundColor+random.nextInt(backgroundColor-foregroundColor);returnnewColor(r,g,b);}publicBufferedImagegetCreateVerifyImage(){//创建
5、一个BufferedImage绘制你的动态图像BufferedImageimage=newBufferedImage(width,height,BufferedImage.TYPE_INT_RGB);//创建完一个BufferedImage后,你需要得到图形环境进行绘制,一个Graphics或者Graphics2D对象Graphicsg=image.getGraphics();//获取图形上下文Graphics2Dg2d=(Graphics2D)g;/*生成有4个随机数字和杂乱背景的图片,数字和背景颜色会改变,服务器端刷新(用history.go(-1)也会变)*/g2d.se
6、tColor(getRandColor(180,250));g2d.fillRect(0,0,width,height);g2d.setFont(newFont("TimesNewRoman",Font.PLAIN,18));//设定字体g2d.setColor(Color.BLUE);g2d.drawRect(0,0,width-1,height-1);//画边框/*随机产生155条干扰线,使图象中的认证码不易被其它程序探测到*/g2d.setColor(getRandColor(160,200));for(inti=0;i<155;i++){intx=random.next
7、Int(width);inty=random.nextInt(height);intxl=random.nextInt(12);intyl=random.nextInt(12);杨教授大学堂,版权所有,盗版必究。9/9页杨教授大学堂精心创作的优秀程序员职业提升必读系列资料g2d.drawLine(x,y,x+xl,y+yl);}for(inti=0;i<4;i++){Stringrand=String.valueOf(random.nextInt(10));randVerifyCode+=r