技巧執行個體:jsp實現圖形驗證碼

來源:互聯網
上載者:User
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();
  }
  }



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。