<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    為了防止某些用戶使用軟件進(jìn)行登錄和發(fā)布信息,很多網(wǎng)站在用戶登錄或者發(fā)布信息時(shí),都要求用戶輸入驗(yàn)證碼。驗(yàn)證碼通常是以一幅圖片的形式顯示的,用戶按照?qǐng)D片中顯示的數(shù)字或者字母依次輸入,服務(wù)端將對(duì)用戶輸入和驗(yàn)證碼進(jìn)行比較,以判斷用戶是否經(jīng)過檢驗(yàn)。由于驗(yàn)證碼都是隨機(jī)生成的,自動(dòng)發(fā)布信息的軟件無法知道生成的驗(yàn)證碼。

     

      1生成圖片的程序:
      2/*
      3 * RandomCodeServlet.java
      4 *
      5 * Created on 2007-5-29, 0:51:02
      6 *
      7 * To change this template, choose Tools | Template Manager
      8 * and open the template in the editor.
      9 */

     10
     11package com.javahe.image;
     12
     13/**
     14 *
     15 * @author java-he
     16 */

     17import java.awt.Color;
     18import java.awt.Font;
     19import java.awt.Graphics2D;
     20import java.awt.image.BufferedImage;
     21import java.util.Random;
     22import javax.imageio.ImageIO;
     23
     24import javax.servlet.*;
     25import java.io.*;
     26import javax.servlet.http.*;
     27
     28public class RandomCodeServlet extends HttpServlet {
     29    //驗(yàn)證碼圖片的寬度。
     30    private int width=60;
     31    //驗(yàn)證碼圖片的高度。
     32    private int height=20;
     33    
     34    protected void service(HttpServletRequest req, HttpServletResponse resp)
     35            throws ServletException, java.io.IOException {
     36        BufferedImage buffImg=new BufferedImage(width,height,
     37                BufferedImage.TYPE_INT_RGB);
     38        Graphics2D g=buffImg.createGraphics();
     39        
     40        //創(chuàng)建一個(gè)隨機(jī)數(shù)生成器類。
     41        Random random=new Random();
     42        
     43        g.setColor(Color.WHITE);
     44        g.fillRect(0,0,width,height);
     45        
     46        //創(chuàng)建字體,字體的大小應(yīng)該根據(jù)圖片的高度來定。
     47        Font font=new Font("Times New Roman",Font.PLAIN,18);
     48        //設(shè)置字體。
     49        g.setFont(font);
     50        
     51        //畫邊框。
     52        g.setColor(Color.BLACK);
     53        g.drawRect(0,0,width-1,height-1);
     54        
     55        //隨機(jī)產(chǎn)生160條干擾線,使圖象中的認(rèn)證碼不易被其它程序探測(cè)到。
     56        g.setColor(Color.GRAY);
     57        for (int i=0;i<160;i++{
     58            int x = random.nextInt(width);
     59            int y = random.nextInt(height);
     60            int xl = random.nextInt(12);
     61            int yl = random.nextInt(12);
     62            g.drawLine(x,y,x+xl,y+yl);
     63        }

     64        
     65        
     66        //randomCode用于保存隨機(jī)產(chǎn)生的驗(yàn)證碼,以便用戶登錄后進(jìn)行驗(yàn)證。
     67        StringBuffer randomCode=new StringBuffer();
     68        int red=0,green=0,blue=0;
     69        
     70        //隨機(jī)產(chǎn)生4位數(shù)字的驗(yàn)證碼。
     71        for (int i=0;i<4;i++{
     72            //得到隨機(jī)產(chǎn)生的驗(yàn)證碼數(shù)字。
     73            String strRand=String.valueOf(random.nextInt(10));
     74            
     75            //產(chǎn)生隨機(jī)的顏色分量來構(gòu)造顏色值,這樣輸出的每位數(shù)字的顏色值都將不同。
     76            red=random.nextInt(110);
     77            green=random.nextInt(50);
     78            blue=random.nextInt(50);
     79            
     80            //用隨機(jī)產(chǎn)生的顏色將驗(yàn)證碼繪制到圖像中。
     81            g.setColor(new Color(red,green,blue));
     82            g.drawString(strRand,13*i+6,16);
     83            
     84            //將產(chǎn)生的四個(gè)隨機(jī)數(shù)組合在一起。
     85            randomCode.append(strRand);
     86        }

     87        //將四位數(shù)字的驗(yàn)證碼保存到Session中。
     88        HttpSession session=req.getSession();
     89        session.setAttribute("randomCode",randomCode.toString());
     90        
     91        //禁止圖像緩存。
     92        resp.setHeader("Pragma","no-cache");
     93        resp.setHeader("Cache-Control","no-cache");
     94        resp.setDateHeader("Expires"0);
     95        
     96        resp.setContentType("image/jpeg");
     97        
     98        //將圖像輸出到Servlet輸出流中。
     99        ServletOutputStream sos=resp.getOutputStream();
    100        ImageIO.write(buffImg, "jpeg",sos);
    101        sos.close();
    102    }

    103}

    104
    105


     1寫好后在web.xml中添加對(duì)應(yīng)的servlet。然后頁面調(diào)用的時(shí)候用。
     2<%@page contentType="text/html"%>
     3<%@page pageEncoding="UTF-8"%>
     4<%--
     5The taglib directive below imports the JSTL library. If you uncomment it,
     6you must also add the JSTL library to the project. The Add Library action
     7on Libraries node in Projects view can be used to add the JSTL 1.1 library.
     8--
    %>
     9<%--
    10<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"
    %> 
    11--%>
    12<%
    13if(request.getParameter("random")!=null)
    14{
    15    if(request.getParameter("random").equals(session.getAttribute("randomCode")))
    16    {
    17        out.println("ok!");
    18    }
    19}
    20
    %>
    21<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    22"http://www.w3.org/TR/html4/loose.dtd">
    23
    24<html>
    25    <head><title>登錄頁面</title>
    26    <body>
    27        <form method="POST" action="index.jsp">
    28            <table>
    29                <tr>
    30                    <td>用戶名:</td>
    31                    <td><input type="text" name="username"></td>
    32                </tr>
    33                <tr>
    34                    <td>密碼:</td>
    35                    <td><input type="password" name="password"></td>
    36                </tr>
    37                <tr>
    38                    <td>驗(yàn)證碼:</td>
    39                    <td>
    40                        <input type="text" name="random" maxlength="4">
    41                    <img src="imgcode">
    42                    </td>
    43                </tr>
    44                <tr>
    45                    <td><input type="reset" value="重填"></td>
    46                    <td><input type="submit" value="提交"></td>
    47                </tr>
    48            </table>
    49        </form>
    50    </body>
    51</html>
    52

     

    最近用netbeans 總?cè)菀装l(fā)生一個(gè)運(yùn)行錯(cuò)誤,指向

    <nbdeploy debugmode="false" clientUrlPart="${client.urlPart}" forceRedeploy="${forceRedeploy}"/>

    。感覺是綁定tomcat失敗。今天晚上調(diào)式這個(gè)程序的時(shí)候又遇到這個(gè)問題。發(fā)現(xiàn)重啟電腦后,就正常了。也許是先前運(yùn)行了其他tomcat下的程序吧。

     

    sun的網(wǎng)站看看

    http://forum.java.sun.com/thread.jspa?threadID=610420&messageID=4240787

    發(fā)現(xiàn)不少人遇到同樣問題,但是具體似乎沒有說出個(gè)所以然,我也不想深究,必定問題自己能解決就行。呵呵。看來netbeans M9還是不夠好哦。期待beta版本。

     

    感覺M9 運(yùn)行,或者編譯都顯得很慢。呵呵,也許是我電腦內(nèi)存只有 512M 的原因吧。

    posted on 2007-05-29 02:13 -274°C 閱讀(4447) 評(píng)論(3)  編輯  收藏 所屬分類: JSP計(jì)算機(jī)綜合


    FeedBack:
    # re: 隨機(jī)生成動(dòng)態(tài)驗(yàn)證碼
    2007-05-29 08:36 | Swing
    另外一個(gè)提倡的方法是生成隨機(jī)數(shù)以后 把相應(yīng)的圖片畫出來
    這樣可以根據(jù)需要調(diào)用隨機(jī)數(shù)的風(fēng)格  回復(fù)  更多評(píng)論
      
    # re: 隨機(jī)生成動(dòng)態(tài)驗(yàn)證碼
    2008-01-30 22:38 | java綜合網(wǎng)
    http://www.javazh.cn
    java綜合網(wǎng)
    不錯(cuò),不錯(cuò)哦  回復(fù)  更多評(píng)論
      
    # re: 隨機(jī)生成動(dòng)態(tài)驗(yàn)證碼
    2014-05-01 20:56 | 廈華

    常用鏈接

    留言簿(21)

    隨筆分類(265)

    隨筆檔案(242)

    相冊(cè)

    JAVA網(wǎng)站

    關(guān)注的Blog

    搜索

    •  

    積分與排名

    • 積分 - 916820
    • 排名 - 40

    最新評(píng)論

    主站蜘蛛池模板: a级毛片高清免费视频就| 亚洲美女视频一区| 国产jizzjizz视频全部免费| 美女被cao免费看在线看网站| 18禁美女黄网站色大片免费观看| 亚洲免费在线视频| 午夜影院免费观看| 91精品手机国产免费| 24小时在线免费视频| 亚州免费一级毛片| 香蕉97超级碰碰碰免费公| 无码精品A∨在线观看免费| 国产免费一区二区三区| 91在线视频免费91| 日本免费网站在线观看| 五月婷婷亚洲综合| 久久精品国产精品亚洲艾草网美妙 | 免费大片黄手机在线观看| 日韩午夜免费视频| 男人的天堂亚洲一区二区三区| 毛片免费视频观看| 日本黄色免费观看| 亚洲国产婷婷综合在线精品| 国产精品亚洲产品一区二区三区| 亚洲日韩乱码中文无码蜜桃臀网站 | www永久免费视频| baoyu122.永久免费视频| 久久不见久久见免费视频7| 国产乱码免费卡1卡二卡3卡| 毛片大全免费观看| 亚洲av无码天堂一区二区三区| 亚洲色图综合在线| 亚洲bt加勒比一区二区| 日本亚洲色大成网站www久久| 另类专区另类专区亚洲| a级黄色毛片免费播放视频| 2022久久国产精品免费热麻豆| 成人午夜大片免费7777| 亚洲麻豆精品国偷自产在线91| 久热综合在线亚洲精品| 久久精品国产亚洲AV久|