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

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

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

    JSP/JAVA

    JAVA SERVER PAGES

    Java生成圖片驗(yàn)證碼

     

    import java.io.*;
        
    import java.net.*;
        
    import javax.servlet.*;
        
    import javax.servlet.http.*;
        
    import java.awt.*;
        
    import java.awt.image.*;
        
    import java.util.*;
        
    import javax.imageio.*;
        
    /**
         *
         * 
    @author http://www.tot.name
         * 
    @version
         
    */

        
    public class Image extends HttpServlet {

        
    /** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
         * 
    @param request servlet request
         * 
    @param response servlet response
         
    */

        
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        
    throws ServletException, IOException {
            response.setContentType(
    "image/jpeg");
            response.setHeader(
    "Pragma","No-cache");
            response.setHeader(
    "Cache-Control","no-cache");
            response.setDateHeader(
    "Expires"0);
            HttpSession session
    =request.getSession();
            
    // 在內(nèi)存中創(chuàng)建圖象
            int width=60, height=20;
            BufferedImage image 
    = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

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

            
    //生成隨機(jī)類
            Random random = new Random();

            
    // 設(shè)定背景色
            g.setColor(getRandColor(200,250));
            g.fillRect(
    00, width, height);

            
    //設(shè)定字體
            g.setFont(new Font("Times New Roman",Font.PLAIN,18));

            
    //畫邊框
            
    //g.setColor(new Color());
            
    //g.drawRect(0,0,width-1,height-1);


            
    // 隨機(jī)產(chǎn)生155條干擾線,使圖象中的認(rèn)證碼不易被其它程序探測(cè)到
            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);
            }


            
    // 取隨機(jī)產(chǎn)生的認(rèn)證碼(4位數(shù)字)
            String sRand="";
            
    for (int i=0;i<4;i++){
                String rand
    =String.valueOf(random.nextInt(10));
                sRand
    +=rand;
                
    // 將認(rèn)證碼顯示到圖象中
                g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//調(diào)用函數(shù)出來(lái)的顏色相同,可能是因?yàn)榉N子太接近,所以只能直接生成
                g.drawString(rand,13*i+6,16);
            }


            
    // 將認(rèn)證碼存入SESSION
            session.setAttribute("rand",sRand);
            
    // 圖象生效
            g.dispose();
            ServletOutputStream responseOutputStream 
    =response.getOutputStream();
            
    // 輸出圖象到頁(yè)面
            ImageIO.write(image, "JPEG", responseOutputStream);

            
    //以下關(guān)閉輸入流!
            responseOutputStream.flush();
            responseOutputStream.close();
        }

        Color getRandColor(
    int fc,int bc){//給定范圍獲得隨機(jī)顏色
            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);
        }

        
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
        /** Handles the HTTP <code>GET</code> method.
         * 
    @param request servlet request
         * 
    @param response servlet response
         
    */

        
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        
    throws ServletException, IOException {
            processRequest(request, response);
        }


        
    /** Handles the HTTP <code>POST</code> method.
         * 
    @param request servlet request
         * 
    @param response servlet response
         
    */

        
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        
    throws ServletException, IOException {
            processRequest(request, response);
        }


        
    /** Returns a short description of the servlet.
         
    */

        
    public String getServletInfo() {
            
    return "Short description";
        }

        
    // </editor-fold>
        }



    ---------------使用驗(yàn)證碼圖片的文件---------index.jsp------------------------------------

    <%@ page contentType="text/html;charset=gb2312" %>
        
    <!DOCTYPE HTML PUBLIC "-//W 3C//DTD HTML 4.01 Transitional//EN">
        
    <html>
        
    <head>
        
    <title>認(rèn)證碼輸入頁(yè)面</title>
        
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
        
    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
        
    <META HTTP-EQUIV="Expires" CONTENT="0">
        
    </head>
        
    <body>
        
    <form method=post action="check.jsp">
        
    <table>
        
    <tr>
        
    <td align=left>系統(tǒng)產(chǎn)生的認(rèn)證碼:</td>
        
    <td><img border=0 src="http://www.zhmy.com/image"></td>
        
    </tr>
        
    <tr>
        
    <td align=left>輸入上面的認(rèn)證碼:</td>
        
    <td><input type=text name=rand maxlength=4 value=""></td>
        
    </tr>
        
    <tr>
        
    <td colspan=2 align=center><input type=submit value="提交檢測(cè)"></td>
        
    </tr>
        
    </form>
        
    </body>
        
    </html>

    -----------------驗(yàn)證的頁(yè)面----------check.jsp------------------------------
    <%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
        
    <html>
        
    <head>
        
    <title>認(rèn)證碼驗(yàn)證頁(yè)面</title>
        
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
        
    <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
        
    <META HTTP-EQUIV="Expires" CONTENT="0">
        
    </head>

        
    <body>
        
    <%
        
    String rand = (String)session.getAttribute("rand");
        
    String input = request.getParameter("rand");
        
    %>
        系統(tǒng)產(chǎn)生的認(rèn)證碼為: 
    <%= rand %><br/>
        您輸入的認(rèn)證碼為: 
    <%= input %><br/>
        
    <br/>
        
    <%
          
    if (rand.equals(input)) {
        
    %>
        
    <font color=green>輸入相同,認(rèn)證成功!</font>
        
    <%
          } 
    else {
        
    %>
        
    <font color=red>輸入不同,認(rèn)證失敗!</font>
        
    <%
          }
        
    %>
        
    </body>
        
    </html>

    posted on 2009-06-27 12:24 C雞雞 閱讀(157) 評(píng)論(0)  編輯  收藏 所屬分類: JSP


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    My Links

    Blog Stats

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    友情鏈接

    學(xué)習(xí)網(wǎng)站

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产日韩AV免费无码一区二区三区 | 亚洲专区在线视频| 精品福利一区二区三区免费视频| 国产精品亚洲精品| 亚洲第一福利网站在线观看| 七色永久性tv网站免费看| 99热亚洲色精品国产88| 久久久久亚洲爆乳少妇无| 99久久精品免费视频| 亚洲AV综合色区无码一二三区 | 亚洲国产视频一区| 亚洲第一成人影院| 免费人成网站在线观看10分钟| 免费看一级毛片在线观看精品视频| 亚洲AV无码成人网站久久精品大| 在线成人a毛片免费播放| 免费无码av片在线观看| 亚洲色欲色欱wwW在线| 亚洲国产精品SSS在线观看AV| 成人毛片视频免费网站观看| a级毛片视频免费观看| 男人的天堂av亚洲一区2区| 亚洲资源在线观看| 色久悠悠婷婷综合在线亚洲| 拍拍拍又黄又爽无挡视频免费| a级成人毛片免费图片| 亚洲av无码一区二区三区四区| 亚洲资源在线观看| 中文字幕精品亚洲无线码一区| 在线免费观看一级片| 99精品视频在线观看免费播放| 曰批免费视频播放免费| 亚洲另类小说图片| 久久夜色精品国产嚕嚕亚洲av| 亚洲 综合 国产 欧洲 丝袜| 成年在线观看网站免费| 久久成人免费电影| 插鸡网站在线播放免费观看| 国产精品亚洲一区二区三区久久 | 亚洲AV无码一区二区三区在线| 亚洲国产精品无码专区影院|