posts - 0,  comments - 19,  trackbacks - 0
          生成驗證碼的jsp頁面createCode.jsp:


          <%@ page language="java" contentType="image/jpegRoomAction.javaRoomAction.javaRoomAction.java; charset=utf-8" pageEncoding="utf-8"%>
          <%@page import="java.io.*,java.util.*,com.sun.image.codec.jpeg.*,java.awt.*,java.awt.image.*"%>
          <%
              String s 
          = "";
              
          int intCount = 0;
              
          /**
               * 驗證碼寬度
               
          */
              
          int width = 100;
              
          /**
               * 驗證碼高度
               
          */
              
          int height = 25;
              
          /**
               * 驗證碼字符集
               
          */
              
          char[] code = new char[] { 'A''B''C''D''E''F''G''H',
                      
          'I''J''K''L''M''N''P''Q''R''S''T''U',
                      
          'V''W''X''Y''Z''a''b''c''d''e''f''g',
                      
          'h''i''j''k''l''m''n''p''q''r''s''t',
                      
          'u''v''w''x''y''z''2''3''4''5''6''7',
                      
          '8''9' };

              
          /**
               *  創建一個隨機數生成器類
               
          */
              Random random 
          = new Random();

              
          // 隨機產生codeCount數字的驗證碼。   
              for (int i = 0; i < 4; i++) {
                  
          // 得到隨機產生的驗證碼數字。   
                  String strRand = String.valueOf(code[random
                          .nextInt(code.length)]);

                  
          // 將產生的四個隨機數組合在一起。   
                  s = s + strRand;
              }

              
          // 保存入session,用于與用戶的輸入進行比較.
              
          // 注意比較完之后清除session.

              session.setAttribute(
          "rand", s);

              response.setContentType(
          "image/gif");

              
          // 定義圖像buffer   
              BufferedImage image = new BufferedImage(width, height,
                      BufferedImage.TYPE_INT_RGB);
              Graphics2D gra 
          = image.createGraphics();
              
          // 將圖像填充為白色   
              gra.setColor(Color.WHITE);
              gra.fillRect(
          00, width, height);

              
          // 創建字體,字體的大小應該根據圖片的高度來定。  

              
          //字體對象構造方法public Font(String familyName,int style,int size)
              
          // familyName字體名;字體名可以分成兩大類:中文字體:宋體、楷體、黑體等;英文字體:Arial、Times New Roman等等;
              
          // style風格。PLAIN普通字體,BOLD(加粗),ITALIC(斜體),Font.BOLD+ Font.ITALIC(粗斜體)
              
          //size 大小

              Font font 
          = new Font("宋體", Font.BOLD + Font.ITALIC, height - 1);//

              
          // 設置字體。   
              gra.setFont(font);

              
          // 畫邊框。   
              gra.setColor(getColor());
              gra.drawRect(
          00, width - 1, height - 1);

              
          // 隨機產生干擾線,使圖象中的認證碼不易被其它程序探測到。   
              gra.setColor(Color.BLACK);
              
          for (int i = 0; i < 50; i++) {
                  
          int x = random.nextInt(width);
                  
          int y = random.nextInt(height);
                  
          int xl = random.nextInt(5);
                  
          int yl = random.nextInt(5);
                  gra.setColor(getColor());
                  gra.drawLine(x, y, x 
          + xl, y + yl);
              }

              
          // 輸出數字
              char c;

              
          for (int i = 0; i < 4; i++) {

                  c 
          = s.charAt(i);

                  gra.drawString(c 
          + "", i * 25 + 420); // 25為寬度,11為上下高度位置

              }

              OutputStream toClient 
          = response.getOutputStream();
              JPEGImageEncoder encoder 
          = JPEGCodec.createJPEGEncoder(toClient);
              encoder.encode(image);

              toClient.close();

              out.clear();
              out 
          = pageContext.pushBody();
          %>
          <%!private Color getColor() {
                  Random random 
          = new Random();
                  int red = 0, green = 0, blue = 0;
                  
          // 產生隨機的顏色分量來構造顏色值,這樣輸出的每位數字的顏色值都將不同。   
                  red = random.nextInt(255);
                  green 
          = random.nextInt(255);
                  blue 
          = random.nextInt(255);
                  
          return new Color(red, green, blue);
              }
          %>



          引用驗證碼的的jsp頁面regist.jsp:

          <script type="text/javascript" >
          //<![CDATA[
          function idenfunc()
          {
              $(
          "#input06").val("");
              $(
          "#idenimage").attr("src","/html/member/createMa.jsp?temp="+new Date());
              
          }

          function toRegist(){
              $.get('/getyzqqLoginAction.do?id='+$('#input06').val(),function(data){
                  if(data=='1'){
                      alert('效驗碼不正確,請重新輸入.');
                      $('#errorM').html('效驗碼不正確,請重新輸入.');
                      return;
                  }
              })
          }
          //]]>
          </script>

          <html>
          <head><title></title></head>
          <body>
          <div>
          <s:form>
          <table>
          <tr>
             
          <th><label for="input06">校驗碼:</label></th>
              
          <td><input type="text" class="input01" id="input06"  /></td>
              
          <td><img id="idenimage" src="/html/member/createMa.jsp" alt="" /> 
              
          <a href="#" onclick="idenfunc();" class="blue">看不清</a>
              
          </td>
          </tr>
          </table>
          </s:form>
          <div class="infobox_register">
                          <p>
                              <img onclick="toRegist();return false;" style="cursor:pointer" src="/images/button/btn01_regist_info.gif" alt="" />
                          </p>
          </div>
          </body>
          </html>

          java驗證代碼:

          public void getyz()throws Exception{
                  HttpServletRequest request 
          = ServletActionContext.getRequest();
                  String identity 
          = request.getParameter("id"!= null ? request.getParameter("id") : "" ;
                  HttpSession session 
          = request.getSession();
                  String realidentity
          =(String)session.getAttribute("rand");
                  HttpServletResponse response 
          = ServletActionContext.getResponse();
                  response.setCharacterEncoding(
          "utf-8");
                  response.setContentType(
          "text/html");
                  
          if(!identity.trim().equalsIgnoreCase(realidentity.trim())){
                      response.getWriter().write(
          "1");
                      response.getWriter().close();
                  }
          else{
                      session.removeAttribute(
          "rand");
                      response.getWriter().write(
          "0");
                      response.getWriter().close();
                  }
              }
          posted on 2012-04-13 15:19 canry Tong 閱讀(741) 評論(3)  編輯  收藏 所屬分類: 驗證碼生成方式

          FeedBack:
          # re: 在jsp頁面中生成驗證碼
          2012-07-18 15:30 | rr
          rrrrr  回復  更多評論
            
          # re: 在jsp頁面中生成驗證碼
          2012-07-18 15:48 | rr
          你提交的時候怎么驗證驗證碼的?  回復  更多評論
            
          # re: 在jsp頁面中生成驗證碼
          2012-07-18 16:07 | canry Tong
          @rr
          我完善了一下  回復  更多評論
            

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


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          留言簿

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          主站蜘蛛池模板: 中西区| 双城市| 蓝山县| 论坛| 鹤壁市| 苍溪县| 新密市| 隆昌县| 柳林县| 平阳县| 通化县| 杭锦旗| 菏泽市| 天台县| 乌拉特中旗| 承德县| 车险| 苍溪县| 云浮市| 宁海县| 张家川| 辰溪县| 阜平县| 墨玉县| 黔江区| 乌拉特后旗| 福贡县| 伊吾县| 衡阳市| 临夏县| 鸡西市| 周至县| 沁源县| 扎赉特旗| 绥江县| 石屏县| 合水县| 汽车| 蒲城县| 贵定县| 白山市|