隨機驗證碼程序

          ? 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.servlet.Servlet;
          ?
          import ??javax.servlet.ServletException;

          ?
          import ??javax.servlet.http.HttpServlet;
          ?
          import ??javax.servlet.http.HttpServletRequest;
          ?
          import ??javax.servlet.http.HttpServletResponse;

          ?
          /** ? */ ? /** ?
          ?*??
          @version ??????1.0
          ?*??
          @author ???????baiyf
          ??
          */ ?
          ??
          public ??? class ??ValidateImg?? extends ??HttpServlet?? implements ??Servlet???{
          ?????
          public ??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);
          ????}?
          ??????
          /** ? */ ? /** ?
          ????*??
          @see ??javax.servlet.http.HttpServlet#void?(javax.servlet.http.HttpServletRequest,?javax.servlet.http.HttpServletResponse)
          ?????
          */ ?
          ?????
          public ??? void ??doGet(HttpServletRequest?req,?HttpServletResponse?resp)
          ?????????
          throws ??ServletException,?IOException???{
          ????????doPost(req,?resp);
          ????}?
          ?
          ??????
          /** ? */ ? /** ?
          ????*??
          @see ??javax.servlet.http.HttpServlet#void?(javax.servlet.http.HttpServletRequest,?javax.servlet.http.HttpServletResponse)
          ?????
          */ ?
          ?????
          public ??? void ??doPost(HttpServletRequest?req,?HttpServletResponse?resp)
          ?????????
          throws ??ServletException,?IOException???{
          ????????resp.setHeader(?
          " ?Pragma? " ?,?? " ?No-cache? " ?);
          ????????resp.setHeader(?
          " ?Cache-Control? " ?,?? " ?no-cache? " ?);
          ????????resp.setDateHeader(?
          " ?Expires? " ?,?? 0 ?);

          ?
          // ??在內存中創建圖象??
          ?????????? int ??width?? = ??? 90 ?,?height?? = ??? 40 ?;
          ????????BufferedImage?image??
          = ?????? new ??BufferedImage(width,?height,?BufferedImage.TYPE_INT_RGB);

          ?
          // ??獲取圖形上下文??
          ?????????Graphics?g?? = ??image.createGraphics();

          ?
          // ??設定背景色??
          ?????????g.setColor(getRandColor(? 180 ?,?? 250 ?));
          ????????g.fillRect(?
          0 ?,?? 0 ?,?width,?height);
          ????????
          ????????Random?random??
          = ??? new ??Random();????
          ????????
          ?????????
          // ?生成干擾橢圓?????
          ??????????? for ??(? int ??i?? = ??? 0 ?;?i?? < ??? 5 ?;?i? ++ ?)???{
          ????????????g.setColor(getRandColor(?
          50 ?,?? 100 ?));
          ?????????????
          int ??x?? = ??random.nextInt(width);
          ?????????????
          int ??y?? = ??random.nextInt(height);
          ????????????g.drawOval(x,?y,??
          4 ?,?? 4 ?);
          ????????}?
          ?
          ????????g.setFont(?
          new ??Font(? "" ?,?Font.PLAIN,?? 40 ?));

          ????????String?sRand??
          = ??? "" ?;
          ?????????
          for ??(? int ??i?? = ??? 0 ?;?i?? < ??? 4 ?;?i? ++ ?)???{
          ?????????
          // ??取隨機產生的認證碼(4位數字)??
          ?????????????String?rand?? = ??String.valueOf(random.nextInt(? 10 ?));
          ????????????sRand??
          += ??rand;
          ?????????
          // ??隨機產生顏色?????
          ?????????????g.setColor(
          ?????????????????
          new ??Color(
          ?????????????????????
          20 ??? + ??random.nextInt(? 80 ?),
          ?????????????????????
          20 ??? + ??random.nextInt(? 100 ?),
          ?????????????????????
          20 ??? + ??random.nextInt(? 90 ?)));
          ?????????
          // ??畫數字?
          ?????????????g.drawString(rand,?(? 17 ??? + ??random.nextInt(? 3 ?))?? * ??i?? + ??? 8 ?,?? 34 ?);

          ?????
          // ?生成干擾線?
          ??????????????? for ??(? int ??k?? = ??? 0 ?;?k?? < ??? 12 ?;?k? ++ ?)???{
          ?????????????????
          int ??x?? = ??random.nextInt(width);
          ?????????????????
          int ??y?? = ??random.nextInt(height);
          ?????????????????
          int ??xl?? = ??random.nextInt(? 9 ?);
          ?????????????????
          int ??yl?? = ??random.nextInt(? 9 ?);
          ????????????????g.drawLine(x,?y,?x??
          + ??xl,?y?? + ??yl);
          ????????????}?
          ????????}?
          ????????req.getSession().setAttribute(?
          " ?rand? " ?,sRand);
          ????????g.dispose();
          ????????javax.imageio.ImageIO.write(image,??
          " ?JPEG? " ?,?resp.getOutputStream());

          ????}?
          }?
          posted on 2006-07-05 14:18 knowhow 閱讀(221) 評論(0)  編輯  收藏 所屬分類: Java基礎知識
          主站蜘蛛池模板: 南和县| 鄯善县| 乐清市| 时尚| 磐安县| 和政县| 新乡市| 沾益县| 改则县| 五峰| 正定县| 蒙自县| 龙山县| 吉木乃县| 无为县| 嘉义县| 枞阳县| 永吉县| 温宿县| 平阴县| 凤台县| 忻城县| 延边| 柘荣县| 炉霍县| 大港区| 桓台县| 大冶市| 延边| 北票市| 益阳市| 德保县| 改则县| 甘谷县| 扶风县| 剑川县| 长顺县| 璧山县| 临湘市| 衢州市| 兴和县|