allen
          專注于java ee技術,包括struts,jsf,webwork,spring,hibernate,ibatis
          posts - 7,  comments - 9,  trackbacks - 0


          import java.awt.Color;
          import java.awt.Font;
          import java.awt.Graphics;
          import java.awt.image.BufferedImage;
          import java.io.IOException;
          import java.io.PrintWriter;
          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;

          public class RadomCodeServlet extends HttpServlet
          {

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


          ?public void doPost(HttpServletRequest request, HttpServletResponse response)
          ???throws ServletException, IOException {
          ??//設置頁面不緩存
          ??response.setHeader("Pragma","No-cache");
          ??response.setHeader("Cache-Control","no-cache");
          ??response.setDateHeader("Expires", 0);
          ??//在內存中創建圖象
          ??int width=60, height=20;
          ??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(0, 0, width, height);

          ??//設定字體
          ??g.setFont(new Font("Times New Roman",Font.PLAIN,18));
          ??
          ??//隨機產生155條干擾線,使圖象中的認證碼不易被其它程序探測到
          ??g.setColor(getRandColor(160,200));
          ??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);
          ??}
          ??
          ??//取隨機產生的認證碼(4位數字)
          ??String sRand="";
          ??for (int i=0;i<4;i++)
          ??{
          ????? String rand=String.valueOf(random.nextInt(10));
          ????? sRand+=rand;
          ????? // 將認證碼顯示到圖象中
          ????? g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//調用函數出來的顏色相同,可能是因為種子太接近,所以只能直接生成
          ????? g.drawString(rand,13*i+6,16);
          ??}

          ??//將認證碼存入SESSION
          ??request.getSession().setAttribute("rand",sRand);


          ??//圖象生效
          ??g.dispose();

          ??//輸出圖象到頁面
          ??ImageIO.write(image, "JPEG", response.getOutputStream());??
          ?}
          ?
          ?//給定范圍獲得隨機顏色
          ?private 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);
          ??? }
          ?調用:
          ?<td height="25">
          ????????????<div align="right">
          ?????????????<font color="#000000">驗證碼:</font>
          ????????????</div>
          ???????????</td>
          ???????????<td align="left">
          ????????????<input type="text" name="randCode" size=10></input>
          ????????????<img style="cursor:hand" name="validatecode"
          ?????????????src=" servlet/RadomCodeServlet" height="17" align="middle"
          ?????????????onclick="document.validatecode.src=' servlet/RadomCodeServlet'">
          ???????????</td>

          posted on 2006-12-08 13:51 robbin163 閱讀(248) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          <2006年12月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 长乐市| 广灵县| 通渭县| 突泉县| 文化| 罗定市| 昌宁县| 涞源县| 扬中市| 宣恩县| 玉林市| 吴川市| 罗平县| 钦州市| 丹江口市| 阳西县| 永兴县| 晋江市| 四子王旗| 右玉县| 阿拉善盟| 汉中市| 长沙县| 肥乡县| 乐业县| 新沂市| 梓潼县| 丰镇市| 赤水市| 扶余县| 广南县| 时尚| 阜宁县| 汉源县| 司法| 灵石县| 芜湖市| 南通市| 辽源市| 富裕县| 胶州市|