首页 > 开发 > JSP > 正文

技巧实例:jsp实现图形验证码

2020-02-05 13:49:15
字体:
来源:转载
供稿:网友

  调用方法    
  <img   src="http://...../getimg">    
   
  原理,在servlet中随机生成一个4位数字1000-9999然后把这数字写入session输出一个图片,上面写有这四个数字在服务器端根据用户输入的数字和 session中的值比较。

  package   com.schoolwx.util;    
  import   java.io.*;    
  import   java.util.*;    
  import   com.sun.image.codec.jpeg.*;    
  import   javax.servlet.*;    
  import   javax.servlet.http.*;    
  import   java.awt.*;    
  import   java.awt.image.*;    
   
  /**    
  *   title:   getimg.java    
  *   description:   这个class主要实现随机生成一个4位数的验证码,并写入session,    
  *   copyright:   copyright   (c)   2003    
  *   company:   蓝星软件    
  *   @author   falcon    
  *   @version   1.1    
  */    
   
  public   class   getimg   extends   httpservlet   {
  private   font   mfont=new   font("宋体",   font.plain,12);//设置字体
  //处理post
  public   void   dopost(httpservletrequest   request,httpservletresponse   response)
  throws   servletexception,ioexception   {
  doget(request,response);
  }
  public   void   doget(httpservletrequest   request,httpservletresponse   response)
  throws   servletexception,ioexception   {
  //取得一个1000-9999的随机数
  string   s="";
  int   intcount=0;
  intcount=(new   random()).nextint(9999);//
  if(intcount<1000)intcount+=1000;
  s=intcount+"";
  //对session付值。
  httpsession   session=request.getsession   (true);
  session.setattribute("getimg",s);
  response.setcontenttype("image/gif");
  servletoutputstream   out=response.getoutputstream();
  bufferedimage   image=new   bufferedimage(35,14,bufferedimage.type_int_rgb);
  graphics   gra=image.getgraphics();
  //设置背景色
  gra.setcolor(color.yellow);
  gra.fillrect(1,1,33,12);
  //设置字体色
  gra.setcolor(color.black);
  gra.setfont(mfont);
  //输出数字
  char   c;
  for(int   i=0;i<4;i++)   {
  c=s.charat(i);
  gra.drawstring(c+"",i*7+4,11);   //7为宽度,11为上下高度位置
  }
  jpegimageencoder   encoder=jpegcodec.createjpegencoder(out);
  encoder.encode(image);
  out.close();
  }
  }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表