验证码java代码怎么写,验证码怎么实现java
验证码部分的java代码怎么写篇1
packagecom.bbs.servlet;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.image.BufferedImage;importjava.io.IOException;importjava.io.OutputStream;importjava.io.PrintWriter;importjava.util.Random;importjavax.imageio.ImageIO;importjavax.servlet.ServletException;importjavax.servlet.;charset=GBK"pageEncoding="GBK"import="java.io.*,java.util.*,com.sun.image.codec.jpeg.*,java.awt.*,java.awt.geom.*,java.awt.image.*"%><%Strings="";intintCount=0;intCount=(newRandom()).nextInt(9999);//取得伪随机数流从此随机数生成器的序列中取出的、在0(包括)和指定值(不包括)之间均匀分布的int值。
if(intCount<1000)//保证验证码为4位数字{intCount+=1000;}s=intCount+"";//转化为字符串//s为一个随即生成的字符串类型的数字//保存入session,用于与用户的输入进行比较.//注意比较完之后清除sessionsession.setAttribute("validateCode",s);response.setContentType("image/gif");//????图片的格式BufferedImageimage=newBufferedImage(127,60,BufferedImage.TYPE_INT_RGB);//图片框的宽高//参数3表示一个图像,该图像具有打包成整数像素的8位RGB颜色分量。//该图像具有不带alpha的DirectColorModel。
//当具有透明alpha的数据存储在此类型的图像中时,必须调整颜色数据以适应非预乘形式和已丢弃的alpha,//如AlphaComposite文档中所描述。Graphicsgra=image.getGraphics();//此方法返回Graphics2D//设置背景色gra.setColor(Color.green);//图片方框的背景颜色gra.fillRect(1,1,125,58);//填充背景颜色//四个参数(XYWH)以图片方框的左上角为坐标原点以点(x,y)开始,向右W向下H所包含的区域//设置字体色gra.setColor(Color.black);//设置字的颜色gra.setFont(newFont("华文行楷",Font.BOLD,60));//将此图形上下文的字体设置为指定字体//setFont(Fontfont)C1文字的格式C3文字的大小//C2Font的样式常量。
样式参数是整数位掩码,可以为PLAIN(无变化)或BOLD(加粗)和ITALIC(倾斜)的按位或(例如,ITALIC或BOLD|ITALIC)。如果样式参数不符合任何一个期望的整数位掩码,则将样式设置为PLAIN。
//输出数字gra.drawString(s,1,50);//使用此图形上下文的当前颜色绘制由指定迭代器给定的文本。//C1为图形的当前文本C2为图形的当前文本居左边框的距离C3为图形的当前文本居上边框的距离OutputStreamtoClient=response.getOutputStream();//publicabstractclassOutputStreamextendsObjectimplementsCloseable,Flushable//此抽象类是表示输出字节流的所有类的超类。
输出流接受输出字节并将这些字节发送到某个接收器。//需要定义OutputStream子类的应用程序必须始终提供至少一种可写入一个输出字节的方法。
JPEGImageEncoderencoder=JPEGCodec.createJPEGEncoder(toClient);encoder.encode(image);toClient.close();out.clear();out=pageContext.pushBody();%>===========这是当年我们项目的发给你了直接复制到jsp里面就可以用如果程序不兼容自己调。
验证码怎么用java代码实现验证篇2
packageutil;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.image.BufferedImage;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.OutputStream;importjava.util.Random;importjavax.imageio.ImageIO;publicfinalclassImageUtil{//验证码字符集privatestaticfinalchar[]chars={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};//字符数量privatestaticfinalintSIZE=4;//干扰线数量privatestaticfinalintLINES=5;//宽度privatestaticfinalintWIDTH=80;//高度privatestaticfinalintHEIGHT=40;//字体大小privatestaticfinalintFONT_SIZE=30;/***生成随机验证码及图片*返回的数组中,第1个值是验证码,第2个值是图片*/publicstaticObject[]createImage(){StringBuffersb=newStringBuffer();//1.创建空白图片BufferedImageimage=newBufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);//2.获取图片画笔Graphicsgraphic=image.getGraphics();//3.设置画笔颜色graphic.setColor(Color.LIGHT_GRAY);//4.绘制矩形背景graphic.fillRect(0,0,WIDTH,HEIGHT);//5.画随机字符Randomran=newRandom();for(inti=0;i 楼上正解/***图片验证码**@authorHuangYong**/publicclassCheckCodeextendsHttpServlet{privatestaticfinallongserialVersionUID=1532787236715859525L;/***验证图片宽*/privatestaticfinalintWIDTH=80;/***验证图片高度*/privatestaticfinalintHEIGHT=20;publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{//获得图片BufferedImageimage=newBufferedImage(WIDTH,HEIGHT,BufferedImage.TYPE_INT_RGB);//获取画笔Graphicsg=image.getGraphics();//设置边框setBounds(g);////设置背景//setBackGround(g);//干扰线drawRandomLine(g);//验证码drawRandomString((Graphics2D)g,request);//发送给页面response.setContentType("image/jpeg");response.setDateHeader("expries",-1);response.setHeader("cache-control","no-cache");response.setHeader("progma","no-cache");ImageIO.write(image,"jpg",response.getOutputStream());}/***边框**@paramg*/privatevoidsetBounds(Graphicsg){g.setColor(Color.BLUE);g.fillRect(0,0,WIDTH,HEIGHT);g.setColor(Color.WHITE);g.fillRect(1,1,WIDTH-2,HEIGHT-2);}/***背景**@paramg*///privatevoidsetBackGround(Graphicsg){////g.setColor(Color.WHITE);//g.drawRect(1,1,WIDTH-2,HEIGHT-2);////}/***干扰线**@paramg*/privatevoiddrawRandomLine(Graphicsg){g.setColor(Color.GREEN);intx1,y1;intx2,y2;Randomr=newRandom();for(inti=0;i//起始xyx1=r.nextInt(WIDTH);y1=r.nextInt(HEIGHT);//结束xyx2=r.nextInt(WIDTH);y2=r.nextInt(HEIGHT);g.drawLine(x1,y1,x2,y2);}}/***验证码**@paramg*/privatevoiddrawRandomString(Graphics2Dg,HttpServletRequestrequest){g.setColor(Color.RED);g.setFont(newFont("宋体",Font.BOLD,20));Stringbase="";StringBuildersb=newStringBuilder();charch='\u0000';intdegree=0;Randomr=newRandom();intstartX=8;for(inti=0;ich=base.charAt(r.nextInt(base.length()));//设置旋转,±20°degree=r.nextInt()%20;g.rotate(degree*Math.PI/180,startX,14);g.drawString(ch+"",startX,16);//取消旋转g.rotate(-degree*Math.PI/180,startX,14);startX+=18;sb.append(ch);}request.getSession().setAttribute("checkCode",sb.toString().toLowerCase());}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{doGet(request,response);}希望能帮助你。求java语言随机生成图片验证码的程序代码,有详细注释最好,本人篇3