北京北大青鳥學術部:JSP驗證碼介紹

      本篇文章由北京北大青鳥通州校區ACCP學術部提供:

      1. random.jsp (產生四位的隨機字符,由0-9,a-z,A-Z構成.并把最終字符串放到session中保存以讓后續頁面驗證真偽)
      代碼如下
      <%@ page contentType="image/jpeg" import="java.awt.*,java.awt.image.*,java.util.*,javax.imageio.*;" pageEncoding="UTF-8" %>
      <%!
       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);
       }
      %>
      <%
       //設置頁面不緩存(北京北大青鳥) 
       response.setHeader("Pragma", "No-cache");
       response.setHeader("Cache-Control", "no-cache");
       response.setDateHeader("Expires", 0);

       // 在內存中創建圖象
       int width = 100, 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(0, 0, width, height);

       // 隨機產生5條干擾線,使圖象中的認證碼不易被其它程序探測到(北京北大青鳥) 
       for (int i = 0; i < 5; i++) {
        g.setColor(new Color(random.nextInt(50),random.nextInt(50),random.nextInt(50)));
        //設定字體
        g.setFont(new Font("Times New Roman", Font.PLAIN, random.nextInt(10)+20));
        int x = random.nextInt(30);
        int y = random.nextInt(30);
        int xl = random.nextInt(30)+80;
        int yl = random.nextInt(30);
        g.drawLine(x, y, xl, yl);
       }

       // 取隨機產生的認證碼(4位隨機符號)
       String sRand = "";
       //種子,可以放中文
       String rand = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
       for (int i = 0; i < 4; i++) {
        String temp = String.valueOf(rand.charAt(random.nextInt(rand.length())));
        sRand += temp;
        // 將認證碼顯示到圖象中,調用函數出來的顏色相同,可能是因為種子太接近,所以直接生成(北京北大青鳥) 
        g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
        g.drawString(temp, 20 * i + 6, 20);
       }

       // 將認證碼存入SESSION
       session.setAttribute("numRand", sRand);
       // 圖象生效
       g.dispose();

       // 輸出圖象到頁面
       ImageIO.write(image, "JPEG", response.getOutputStream());
       out.clear();
       out = pageContext.pushBody();
      %>

      2. index.jsp (顯示驗證圖片)
      <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
      <%
      String path = request.getContextPath();
      String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
      %>

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      <html>
        <head>
          <base href="<%=basePath%>">
          <title>驗證碼測試</title>
        </head>
       
        <body>
          <img src="random.jsp" alt="不清楚,單擊更換圖片" onclick="this.src='',this.src='random.jsp'" />
        </body>
      </html>
      北京北大青鳥) 

      北大青鳥網上報名
      北大青鳥招生簡章
      主站蜘蛛池模板: 精品无码综合一区二区三区| 亚洲国产精品一区| 在线免费一区二区| 亚洲av色香蕉一区二区三区蜜桃| 国产在线观看一区精品| 国产精品无码亚洲一区二区三区| 精品国产毛片一区二区无码| 亚洲AV无码一区二区大桥未久 | 黑巨人与欧美精品一区| 69久久精品无码一区二区| 精品综合一区二区三区| 国产一区在线mmai| 国产精品香蕉在线一区| 无码人妻久久一区二区三区免费丨| 亚洲国产精品一区二区久久hs| 精品国产一区二区三区久| 国产成人一区二区精品非洲| 午夜视频一区二区| 国产伦精品一区二区三区免费下载| 亚洲AV无码一区二区三区网址 | 日本一区二区三区爆乳| 国内自拍视频一区二区三区 | 久久无码人妻一区二区三区| 国精产品一区一区三区免费视频| 色系一区二区三区四区五区 | 免费视频一区二区| 日韩视频一区二区三区| 久久精品一区二区三区AV| 极品尤物一区二区三区| 精品天海翼一区二区| 国产激情无码一区二区| 国产精品视频一区麻豆| 中日av乱码一区二区三区乱码| 亚洲一区二区三区播放在线| 高清一区高清二区视频| 国产精品va无码一区二区| 视频一区视频二区在线观看| 色偷偷一区二区无码视频| 一区二区三区www| 国精产品一区一区三区有限在线| 国产剧情国产精品一区|