原理,在servle">

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

80酷酷网    80kuku.com

  js|技巧|图形|验证码

  调用方法    
  <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();
  }
  }



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: