还剩7页未读,继续阅读
文本内容:
java验证码生成验证码效果图importjava.awt.Color;importjava.awt.Font;importjava.io.lOException;importjava.io.Outputstream;importjava.util.ArrayList;importjava.util.List;importjavax.imageio.ImagelO;importjavax.servlet.Servlet;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importorg.apachecommons.lang.math.Randomlltils;importnl.captcha.Captcha;importnl.captcha.Captcha.Builder;importnl.captcha•gimpy.BlockGimpyRenderer;importnl.captcha.text.producer.ChineseTextProducer;importnl.captcha.text.producer.DefaultTextProducer;importnl.captcha.text.renderer.DefaultWordRenderer;importnl.captcha.text.renderer.WordRenderer;publicclassCaptchaServletextendsHttpServletimplementsServlet{privatestaticfinallongseriaIVersionUID=IL;privatestaticfinalStringPARAM_HEIGHT=height;//高度默认为50protectedint_height=40;protectedboolean_noise=false;protectedString_text=number:1word:1number:1number:1word:1”;/**初始化过滤器.将配置文件的参数文件赋值*©throwsServletException/@OverridepublicvoidinitthrowsServletException{ifgetInitParameterPARAM_HEIGHT!=null{_height=Integer.valueOfgetInitParameterPARAM_HEIGHT;ifgetInitParameterPARAM_WIDTH!=null{_width=Integer.valueOfgetInitParameterPARAM_IaIIDTH;ifgetInitParameterPAEAM_NOISE!=null{noise=Boolean.valueOfgetInitParameterPAEAM_NOISE;ifgetInitParameterPAEAM_NOISE!=null{_text=String.valueOfgetInitParameterPAEAM_TEXT;}/***因为获取图片只会有get方法*/@OverridepublicvoiddoGetHttpServletRequestreqHttpServletResponserespthrowsServletException^lOException{Builderbuilder=newCaptcha.Builder_widthJ_height;//增加边框//builder.addBorder;//是否增加干扰线条if_noise==true{builder.addNoise;〃自定义字体大小//自定义设置字体颜色和大小最简单的效果多种字体随机显示ListFontfontList=newArrayListFont;fontList.addnewFont微软雅黑二Font.LAYOUT_NO_START_CONTEXT30;//可以设置斜体之类的DefaultWordRendererdwr=newDefaultWordRenderergetRandomColorfontList;//加入多种颜色后会随机显示字体空心WordRendererwr=dwr;//增加文本,默认为5个随机字符.if_text==null{builder.addText;}else{String[]ts=_text.splitZ;forinti=0;its.length;i++{String[]tsi=ts[i].split:ifChinese.equalstsi
[0]{builder.addTextnewChineseTextProducerInteger.parseInttsl
[1]wr;}elseifnumber.equalstsl
[0]{//这里没有和1是为了避免歧义和字母工和0char[]numberChar=newchar[]{2‘3’‘41‘5’678};builder.addTextnewDefaultTextProducerInteger.parselnttsi
[1]numberCharwr;}elseifword.equalstsi
[0]{//原理同上char[]numberChar=newchar[]{abd’‘eF‘gh’r wxy};builder.addTextnewDefaultTextProducerInteger.parselnttsi
[1]numberCharwr;}else{builder•addTextnewDefaultTextProducerInteger.parselnttsi
[1]wr;}//添加背景//设置背景渐进效果以及颜色form为开始颜色,to为结束颜色//GradiatedBackgroundProducergbp=newGradiatedBackgroundProducer;//gbp.setFromColorColor.yellow;//gbp.setToColorColor.red;//无渐进效果,只是填充背景颜色//FlatColorBackgroundProducerfbp=new//FlatColorBackgroundProducerColor.red;//加入网纹--一■般不会用//SquigglesBackgroundProducersbp=newSquigglesBackgroundProducer;//没发现有什么用,可能就是默认的//TransparentBackgroundProducertbp=new//TransparentBackgroundProducer;//builder.addBackgroundgbp;//装饰字体//字体边框齿轮效果默认是3builder.gimpnewBlockGimpyRenderer1;//波纹渲染相当于加粗//builder.gimpnewRippleGimpyRenderer;//修剪一一般不会用//builder.gimpnewShearGimpyRendererColor.red;//加网—第一个参数是横线颜色,第二个参数是竖线颜色//builder.gimpnewFishEyeGimpyRendererColor.redJColor.yellow;//加入阴影效果默认375//builder.gimpnewDropShadowGimpyRenderer;〃创建对象Captchacaptcha=builder.build;req.getSession.setAttributesimpleCaptchacaptcha;resp.setHeader“Cache-Control”“privateno-cacheno-store;resp•setContentTypeimage/png;tryOutputstreamos=resp.getOutputStream;ImagelO.writecaptcha.getImage.“png”os;os.close;}catchlOExceptione{e.printStackTrace;publicColorgetRandomColor{intn=Randomlltils.nextInt100;ifn%3==1{returnColor.RED;}elseifn%3==2{returnColor.BLUE;returnColor.GREEN;}/pre。