Java编写验证码

import java.awt.Color; 
  import java.awt.Font; 
  import java.awt.Graphics; 
  import java.awt.image.BufferedImage; 
  import java.io.IOException; 
  import java.util.Random; 
   
  import javax.imageio.ImageIO; 
  import javax.servlet.ServletException; 
  import javax.servlet.http.HttpServlet; 
  import javax.servlet.http.HttpServletRequest; 
  import javax.servlet.http.HttpServletResponse; 
  import javax.servlet.http.HttpSession; 
   
  @SuppressWarnings("serial") 
  public class CheckCodeImg extends HttpServlet 
  { 
   private Font mFont = new Font("Arial Black", Font.PLAIN, 16); 
   
   public void init() throws ServletException 
   { 
   super.init(); 
   } 
   Color getRandColor(int fc,int bc) 
   { 
   Random random = new Random(); 
   if(fc>255) fc=255; 
   if(bc>255) bc=255; 
   int r=fc+random.nextInt(bc-fc); 
   int g=fc+random.nextInt(bc-fc); 
   int b=fc+random.nextInt(bc-fc); 
   return new Color(r,g,b); 
   System.out.println("http://www.ewuji.net/");
   } 
   
   private String getRandomChar() 
   { 
   int rand = (int)Math.round(Math.random() * 2); 
   long itmp = 0; 
   char ctmp = ’/u0000’; 
   switch (rand) 
   { 
   case 1: 
   itmp = Math.round(Math.random() * 25 + 65); 
   ctmp = (char)itmp; 
   return String.valueOf(ctmp); 
   case 2: 
   itmp = Math.round(Math.random() * 25 + 97); 
   ctmp = (char)itmp; 
   return String.valueOf(ctmp); 
   default : 
   itmp = Math.round(Math.random() * 9); 
   return String.valueOf(itmp); 
   } 
   } 
   public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
   { 
   response.setHeader("Pragma","No-cache"); 
   response.setHeader("Cache-Control","no-cache"); 
   response.setDateHeader("Expires", 0); 
   response.setContentType("image/jpeg"); 
   
   int width=150, height=30; 
   BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 
   
   Graphics g = image.getGraphics(); 
   Random random = new Random(); 
   g.setColor(getRandColor(200,250)); 
   g.fillRect(1, 1, width-1, height-1); 
   g.setColor(new Color(102,102,102)); 
   g.drawRect(0, 0, width-1, height-1); 
   g.setFont(mFont); 
   
   g.setColor(getRandColor(160,200)); 
   for (int i=0;i<155;i++) 
   { 
   int x = random.nextInt(width - 1); 
   int y = random.nextInt(height - 1); 
   int xl = random.nextInt(6) + 1; 
   int yl = random.nextInt(12) + 1; 
   g.drawLine(x,y,x + xl,y + yl); 
   } 
   for (int i = 0;i < 70;i++) 
   { 
   int x = random.nextInt(width - 1); 
   int y = random.nextInt(height - 1); 
   int xl = random.nextInt(12) + 1; 
   int yl = random.nextInt(6) + 1; 
   g.drawLine(x,y,x - xl,y - yl); 
   } 
   
   String sRand=""; 
   for (int i=0;i<6;i++) 
   { 
   String tmp = getRandomChar(); 
   sRand += tmp; 
   g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110))); 
   g.drawString(tmp,15*i+10,15); 
   } 
   
   HttpSession session = request.getSession(true); 
   session.setAttribute("rand",sRand); 
   g.dispose(); 
   ImageIO.write(image, "JPEG", response.getOutputStream()); 
   } 
   
  }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ma_xs

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值