网站首页 > 网络编程教程 > JSP教程 > jsp实现图形验证码

jsp实现图形验证码

  • 作者:互联网
  • 时间:2009-07-02 17:08:30
  调用方法    
  http://..***getImg
">http://..***getImg">    
   
  原理,在servlet中随机生成一个4位数字1000-9999    
  然后把这数字写入session    
  输出一个图片,上面写有这四个数字    
  在服务器端根据用户输入的数字和    
  session中的值比较。    
   
   
  package   co***choolwx.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:   ge***g.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("宋体",   Fo***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   se***on=request.getSession ;  (true);    
   
  se***on.setAttribute("getImg",s);    
   
  re***nse.setContentType("image/gif");    
   
  ServletOutputStream   ou***esponse.getOutputStream();    
   
  BufferedImage   image=new   BufferedImage(35,14,Bu***redImage.TYPE_INT_RGB);    
   
  Graphics   gr***mage.getGraphics();    
  //设置背景色    
  gr***etColor(Co***.yellow);    
   
  gr***illRect(1,1,33,12);    
  //设置字体色    
  gr***etColor(Co***.black);    
   
  gr***etFont(mFont);    
  //输出数字    
  char   c;    
   
  for(int   i=0;i<4;i++)   {    
   
  c=***harAt(i);    
   
  gr***rawString(c+"",i*7+4,11);   //7为宽度,11为上下高度位置    
   
  }    
   
  JPEGImageEncoder   en***er=JPEGCodec.createJPEGEncoder(out);    
   
  en***er.encode(image);    
   
  ou***lose();    
   
  }    
   
  }    
https://images.downcodes.comhttp://blog.csdn.net/lixiaolong_blog/archive/2007/01/25/1493417.aspx