小毅的驗證碼

          Posted on 2008-09-10 16:42 H2O 閱讀(180) 評論(0)  編輯  收藏 所屬分類: java
          checkCode.java
          package com.yz.checkcode;

          import java.io.IOException;    
          import java.io.PrintWriter;

          import javax.servlet.ServletException;    
          import javax.servlet.ServletOutputStream;    
             
          import javax.servlet.http.HttpServlet;    
          import javax.servlet.http.HttpServletRequest;    
          import javax.servlet.http.HttpServletResponse;    
          import javax.servlet.http.HttpSession;    
             
          import com.sun.image.codec.jpeg.JPEGCodec;    
          import com.sun.image.codec.jpeg.JPEGImageEncoder;    
             
          import java.awt.*;    
          import java.awt.image.*;    
          import java.util.*;    
             
          public class checkCode    
              extends HttpServlet {    
             
            public void doGet(HttpServletRequest request, HttpServletResponse response) throws   
                 ServletException, IOException {    
               response.reset();    
               response.setContentType("image/jpeg");    
               response.setHeader("Pragma","No-cache");
               response.setHeader("Cache-Control","no-cache");
               response.setHeader("Expires",   "Tues,   01   Jan   1980   00:00:00   GMT");   
              
             
          //在內(nèi)存中創(chuàng)建圖象    
              int width = 58, height = 18;    
               BufferedImage image = new BufferedImage(width, height,    
                                                       BufferedImage.TYPE_INT_RGB);    
             
          //獲取圖形上下文    
               Graphics g = image.getGraphics();    
             
          //生成隨機(jī)類    
               Random random = new Random();    
             
          //設(shè)定背景色    
               g.setColor(new Color(201 + random.nextInt(50), 201 + random.nextInt(50),    
                                   201 + random.nextInt(50)));    
               g.fillRect(0, 0, width, height);    
             
          //設(shè)定字體    
               g.setFont(new Font("Times new Roman", Font.PLAIN, 18));    
             
          //畫邊框    
          g.setColor(new Color(255,140,0));    
          g.drawRect(0,0,width-1,height-1);    
             
          //隨機(jī)產(chǎn)生155條干擾線,使圖象中的認(rèn)證碼不易被其它程序探測到    
               g.setColor(new Color(160 + random.nextInt(41), 160 + random.nextInt(41),    
                                   160 + random.nextInt(41)));    
              for (int i = 0; i 
          < 155
          ; i++) {    
                int x 
          = random.nextInt(width);    
                
          int y 
          = random.nextInt(height);    
                
          int xl 
          = random.nextInt(12);    
                
          int yl 
          = random.nextInt(12);    
                 
          g.drawLine(x, y, x + xl, y + yl);    
               }    
             
          //取隨機(jī)產(chǎn)生的認(rèn)證碼
              String src 
          = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKMNOPQRSTUVWXYZ0123456789"
          ;
               String sRand 
          = ""
          ;    
              for (int i 
          = 0; 
          i < 4; i++) {    
                  int position
          =random.nextInt(src.length());
                  
          String radomChar
          =src.charAt(position)+"";
                 
          sRand +
          = radomChar;    
             
          //將認(rèn)證碼顯示到圖象中    
                 g.setColor(new Color(20 + random.nextInt(111), 20 + random.nextInt(111),    
                                     20 + random.nextInt(111)));    
             
          //調(diào)用函數(shù)出來的顏色相同,可能是因為種子太接近,所以只能直接生成    
                 g.drawString(  radomChar, 13 * i + 6, 16);    
               }    
              
          //圖象生效    
               g.dispose(); 
               HttpSession session 
          = request.getSession(true);  
               
               
          //將認(rèn)證碼存入SESSION    
                session.setAttribute("checkCode", sRand);
             
          //輸出圖象到頁面     
               ServletOutputStream out 
          = response.getOutputStream();    
               
          JPEGImageEncoder encoder 
          = JPEGCodec.createJPEGEncoder(out);    
               
          encoder.encode(image);    
               System.out.println("驗證碼:\t"+sRand);
               out.println(sRand);
               out.flush();
               out.close();
             }    
          }    

          getKey.java
          package com.yz.checkcode;

          import java.io.IOException;
          import java.io.PrintWriter;

          import javax.servlet.ServletException;
          import javax.servlet.ServletInputStream;
          import javax.servlet.http.HttpServlet;
          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;
          import javax.servlet.http.HttpSession;

          public class getKey extends HttpServlet {

              public void doGet(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {
                  this.doPost(request, response);
              }

              public void doPost(HttpServletRequest request, HttpServletResponse response)
                      throws ServletException, IOException {

                  response.setContentType("text/html");
                  response.setCharacterEncoding("utf-8");
                  PrintWriter out = response.getWriter();    
                  String key=request.getSession().getAttribute("checkCode").toString();
                  out.println(key);
                  out.flush();
                  out.close();
              }
          }

          posts - 0, comments - 21, trackbacks - 0, articles - 101

          Copyright © H2O

          主站蜘蛛池模板: 久治县| 万宁市| 淮南市| 若尔盖县| 拜城县| 田阳县| 石台县| 昂仁县| 榆树市| 博爱县| 静乐县| 安义县| 乐清市| 高要市| 云南省| 贡觉县| 德江县| 射洪县| 墨脱县| 湖南省| 上林县| 西平县| 鄢陵县| 安泽县| 石渠县| 辽宁省| 潜江市| 九台市| 敦煌市| 丹棱县| 西丰县| 岳普湖县| 蒙城县| 石阡县| 青海省| 平阳县| 宿迁市| 商城县| 安仁县| 昭平县| 安陆市|