资源描述:
《Java动态验证码》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实现的思路:首先,需要创建一个Servlet。该Servlet通过字节型响应给客户端返回一个图片,该图片是通过JDK中Java2D的类库来生成一个图片。图片的生成是依靠一个随机数来完成,然后将这个随机数写成图片格式。最后在Session将这个随机的字符串的状态保持住,以便在用户填写后进行对比。其次,在需要加入验证码的JSP页面中,通过引入该图片。最后,单用户填写完验证码后,提交到某一个Servlet中。在这个Servlet中,通过request.getParameter()方法获取用户添
2、加的验证码,然后取出后与Session中生成的验证码进行对比,如果对比成功就表示通过,否则返回该页面给用户提示验证码错误的信息。参考代码:1、用来生成验证码图片的Servlet:packagecom.bluedot.common;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics2D;importjava.awt.image.BufferedImage;importjava.util.Random;importjavax.imageio.ImageIO;i
3、mportjavax.servlet.ServletException;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjavax.servlet.http.HttpSession;publicclassValidateCodeServlet
4、extendsHttpServlet{//验证码图片的宽度。privateintwidth=60;//验证码图片的高度。privateintheight=20;//验证码字符个数privateintcodeCount=4;privateintx=0;//字体高度privateintfontHeight;privateintcodeY;char[]codeSequence={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','
5、U','V','W','X','Y','Z','0','1','2','3','4','5','6','7','8','9'};/***初始化验证图片属性*/publicvoidinit()throwsServletException{//从web.xml中获取初始信息//宽度StringstrWidth=this.getInitParameter("width");//高度StringstrHeight=this.getInitParameter("height");//字符个数StringstrCodeCount=this.ge
6、tInitParameter("codeCount");//将配置的信息转换成数值try{if(strWidth!=null&&strWidth.length()!=0){width=Integer.parseInt(strWidth);}if(strHeight!=null&&strHeight.length()!=0){height=Integer.parseInt(strHeight);}if(strCodeCount!=null&&strCodeCount.length()!=0){codeCount=Integer.par
7、seInt(strCodeCount);}}catch(NumberFormatExceptione){}x=width/(codeCount+1);fontHeight=height-2;codeY=height-4;}protectedvoidservice(HttpServletRequestreq,HttpServletResponseresp)throwsServletException,java.io.IOException{//定义图像bufferBufferedImagebuffImg=newBufferedImag
8、e(width,height,BufferedImage.TYPE_INT_RGB);Graphics2Dg=buffImg.createGraphics();//创建一个随机数生成器类Randomrandom=newRandom()