青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::

1. 需要的jar包: patchca.jar: http://code.google.com/p/patchca/

   patchca使用LGPL協議: GNU Lesser General Public License

2. 請求驗證碼的 JSP: validate.jsp

3. 產生驗證碼的 Servlet: ValidationCode.java

4. 驗證驗證碼的 Servlet: ValidateCode.java


驗證過程: validate.jsp請求驗證碼 -> ValidationCode.java生成驗證碼圖片和相應的字符給validate.jsp -> 用戶輸入驗證碼 -> ValidateCode.java驗證用戶的驗證碼是否輸入正確.

================================== validate.jsp ==================================

<%@ page language="java" contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>


<body>

    <img src="ValidationCode">

    <form action="ValidateCode" method="post">

        <input type="text" name="validateCode"/>

        <input type="submit" value="Submit"/>

    </form>

</body>

</html>


 

================================== ValidateCode.java ==================================


import java.io.IOException;


import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;


/**

 * Servlet implementation class Validate

 */

public class ValidateCode extends HttpServlet {

    private static final long serialVersionUID = 1L;


    public ValidateCode() {

        super();

    }


    @Override

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,

                                                                                  IOException {

        String validateCode = request.getParameter("validateCode");

        HttpSession session = request.getSession();

        

        // 從session中取得驗證碼與用戶輸入的驗證碼進行比較

        String storedValidateCode = (String) session.getAttribute(session.getId());

        

        response.setHeader("Content-type", "text/html; charset=UTF-8");

        if (validateCode.equalsIgnoreCase(storedValidateCode)) {

            response.getWriter().println("驗證碼輸入正確: " + validateCode);

        } else {

            response.getWriter().println("驗證碼輸入錯誤: " + validateCode);

        }

    }


    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,

                                                                                   IOException {

        doGet(request, response);

    }

}

 


================================== ValidationCode.java ==================================

import java.awt.image.BufferedImage;

import java.io.IOException;


import javax.imageio.ImageIO;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.HttpSession;


import org.patchca.color.GradientColorFactory;

import org.patchca.filter.predefined.CurvesRippleFilterFactory;

import org.patchca.filter.predefined.DiffuseRippleFilterFactory;

import org.patchca.filter.predefined.DoubleRippleFilterFactory;

import org.patchca.filter.predefined.MarbleRippleFilterFactory;

import org.patchca.filter.predefined.RippleFilterFactory;

import org.patchca.filter.predefined.WobbleRippleFilterFactory;

import org.patchca.service.Captcha;

import org.patchca.service.ConfigurableCaptchaService;


/**

 * Servlet implementation class ValidateCode

 */

public class ValidationCode extends HttpServlet {

    private static final long serialVersionUID = 1L;


    public ValidationCode() {

        super();

    }


    // 關鍵之處,產生圖片


    @Override

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,

                                                                                  IOException {

        response.setContentType("image/png");

        ValidateEntry ve = new ValidateEntry();


        HttpSession session = request.getSession();

        session.setAttribute(session.getId(), ve.getCode()); // 驗證碼保存在session中


        ServletOutputStream out = response.getOutputStream();

        BufferedImage img = ve.getImage();

        ImageIO.write(img, "png", out);

        out.close();

    }


    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,

                                                                                   IOException {

        doGet(request, response);

    }


    protected class ValidateEntry {

        String code;

        BufferedImage image;


        ValidateEntry() {

            createEntry();

        }


        public String getCode() {

            return code;

        }


        public BufferedImage getImage() {

            return image;

        }


        private void createEntry() {

            ConfigurableCaptchaService cs = new ConfigurableCaptchaService();

            cs.setColorFactory(new GradientColorFactory());

            switch ((int) (System.currentTimeMillis() % 6)) {

            case 0:

                cs.setFilterFactory(new CurvesRippleFilterFactory(cs.getColorFactory()));

                break;

            case 1:

                cs.setFilterFactory(new MarbleRippleFilterFactory());

                break;

            case 2:

                cs.setFilterFactory(new DoubleRippleFilterFactory());

                break;

            case 3:

                cs.setFilterFactory(new WobbleRippleFilterFactory());

                break;

            case 4:

                cs.setFilterFactory(new DiffuseRippleFilterFactory());

                break;

            case 5:

                cs.setFilterFactory(new RippleFilterFactory());

                break;

            }


            Captcha captcha = cs.getCaptcha();

            code = captcha.getChallenge();

            image = captcha.getImage();

        }

    }

}

 

 

posted on 2010-12-28 06:30 逛奔的蝸牛 閱讀(2937) 評論(4)  編輯 收藏 引用 所屬分類: Java

評論

# re: Java:Servlet生成驗證碼 2010-12-28 07:02 逛奔的蝸牛
<%!
public String getCookieValue(Cookie[] cookies, String cookieName, String defaultValue) {
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
if (cookieName.equals(cookie.getName())) return (cookie.getValue());
}
return (defaultValue);
}
%>  回復  更多評論
  

# re: Java:Servlet生成驗證碼 2011-05-25 12:19 sophy
web。xml怎么配置的  回復  更多評論
  

# re: Java:Servlet生成驗證碼 2014-01-21 11:22 wk
import org.patchca.color.GradientColorFactory;

import org.patchca.filter.predefined.CurvesRippleFilterFactory;

import org.patchca.filter.predefined.DiffuseRippleFilterFactory;

import org.patchca.filter.predefined.DoubleRippleFilterFactory;

import org.patchca.filter.predefined.MarbleRippleFilterFactory;

import org.patchca.filter.predefined.RippleFilterFactory;

import org.patchca.filter.predefined.WobbleRippleFilterFactory;

import org.patchca.service.Captcha;

import org.patchca.service.ConfigurableCaptchaService;

這是需要手動導入的包么???  回復  更多評論
  

# re: Java:Servlet生成驗證碼 2014-02-05 13:27 鄺晶武
網頁生成版的怎么用?  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩一区二区三区在线看| 99国产精品99久久久久久| 欧美一区二区三区在线| 亚洲美女精品久久| 欧美成人午夜视频| 免费在线观看精品| 亚洲国产精品成人综合| 久久精品论坛| 欧美88av| 一区二区高清| 亚洲在线视频免费观看| 久久久精品国产免费观看同学| 亚洲综合日韩中文字幕v在线| 欧美一区二区三区免费在线看| 午夜伦理片一区| 欧美3dxxxxhd| 欧美偷拍一区二区| 欧美成人激情视频| 久久久中精品2020中文| 欧美国产免费| 国产视频亚洲精品| 精品1区2区3区4区| 亚洲午夜一级| 免费h精品视频在线播放| 日韩午夜免费| 欧美在线视频a| 裸体女人亚洲精品一区| 欧美性大战久久久久| 伊人狠狠色j香婷婷综合| 日韩午夜精品视频| 久久久久久尹人网香蕉| 一区二区三区四区在线| 久久久久网站| 久久久一二三| 久久精品国产免费| 欧美激情欧美狂野欧美精品| 一区二区日韩欧美| 亚洲精品免费在线播放| 亚洲欧美日韩国产一区| 久久精品日产第一区二区三区| 欧美精品1区2区| 国产午夜精品麻豆| 亚洲黄色在线看| 欧美呦呦网站| a4yy欧美一区二区三区| 久久婷婷久久| 国产精品一区二区久激情瑜伽| 亚洲承认在线| 久久不射2019中文字幕| 麻豆精品视频在线观看视频| 亚洲影视中文字幕| 你懂的国产精品永久在线| 国产深夜精品福利| 亚洲视频久久| 在线观看亚洲专区| 久久偷窥视频| 在线一区日本视频| 欧美精品videossex性护士| 国产免费观看久久黄| 99精品视频免费观看视频| 欧美va天堂va视频va在线| 亚洲第一精品夜夜躁人人爽 | 黄色成人av网| 亚洲欧美日韩在线综合| 亚洲精品久久久久久久久久久久久 | 欧美日韩免费观看一区=区三区| 国产午夜精品理论片a级大结局| 亚洲一区二区三区精品动漫| 亚洲精品乱码久久久久久| 欧美精品日韩一本| 亚洲激情第一区| 久久伊伊香蕉| 麻豆精品视频在线| 伊人狠狠色丁香综合尤物| 蜜臀av一级做a爰片久久| 久久精品99国产精品日本| 国产在线一区二区三区四区 | 一区二区免费在线观看| 欧美日韩国产色视频| 91久久在线| 欧美另类综合| 欧美精品一区二区三区久久久竹菊| 激情久久五月天| 久久婷婷国产麻豆91天堂| 欧美亚洲一区三区| 国产精品日韩电影| 久久久噜噜噜久久狠狠50岁| 久久久国产成人精品| 亚洲电影天堂av| 牛牛影视久久网| 欧美日韩精品系列| 亚洲欧美日韩一区二区三区在线观看| 香港成人在线视频| 永久555www成人免费| 99精品热视频| 亚洲一本视频| 亚洲视频碰碰| 欧美一级日韩一级| 国产视频一区在线观看一区免费| 欧美va天堂在线| 欧美日韩免费高清一区色橹橹| 亚洲一区二区三区免费观看 | 久久综合久色欧美综合狠狠 | 女生裸体视频一区二区三区| 亚洲视频中文字幕| 亚洲高清色综合| 欧美视频在线一区| 久久精品免视看| 裸体女人亚洲精品一区| 亚洲图片欧美日产| 久久精品国产第一区二区三区最新章节 | 亚洲黄色av一区| 亚洲欧美日韩综合| 国产精品一区二区三区观看 | 一区二区三区高清在线观看| 狠狠做深爱婷婷久久综合一区| 亚洲激情在线播放| 国产精品亚洲第一区在线暖暖韩国| 午夜国产精品视频免费体验区| 久久久久久色| 亚洲视频在线观看网站| 欧美黑人多人双交| 亚洲午夜电影| 欧美精品一区二区三区很污很色的 | 亚洲欧美日韩国产综合在线 | 欧美高清不卡| 欧美三级网址| 欧美~级网站不卡| 狂野欧美激情性xxxx欧美| 性欧美videos另类喷潮| 欧美国产一区二区三区激情无套| 亚洲欧美激情一区| 欧美成人免费一级人片100| 亚洲一二三区视频在线观看| 欧美大片免费久久精品三p| 欧美亚洲一区二区在线观看| 欧美视频日韩视频在线观看| 亚洲第一区中文99精品| 国产精品免费一区二区三区在线观看 | 一本色道久久综合狠狠躁的推荐| 91久久久国产精品| 亚洲欧美激情一区二区| 亚洲午夜电影网| 欧美精品aa| 亚洲精品日韩综合观看成人91| 国产一区二区三区精品久久久| 99热免费精品在线观看| 亚洲美女视频网| 女主播福利一区| 亚洲国产一区二区三区高清| 国产午夜精品视频免费不卡69堂| 久久九九精品| 久久久久国产成人精品亚洲午夜| 国产亚洲美州欧州综合国| 亚洲欧美另类在线观看| 亚洲永久免费视频| 欧美日韩亚洲综合一区| 最近看过的日韩成人| 亚洲第一精品夜夜躁人人躁| 久久成人综合网| 久久中文久久字幕| 一区二区视频免费完整版观看| 久久艳片www.17c.com| 久久视频一区| 亚洲国产精品t66y| 欧美不卡福利| 亚洲国产综合91精品麻豆| 99国产精品久久久久久久| 免费看成人av| 国产精品va在线播放| 国产一区二区三区直播精品电影 | 欧美一区二区三区在线观看视频| 欧美自拍偷拍午夜视频| 国产亚洲aⅴaaaaaa毛片| 亚洲欧美日韩精品久久| 欧美一区二区在线看| 国产精品免费观看视频| 亚洲视频在线观看视频| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲国内高清视频| 亚洲午夜羞羞片| 国产农村妇女毛片精品久久莱园子 | 国产精品爽黄69| 久久综合久久久| 日韩视频一区| 老鸭窝91久久精品色噜噜导演| 亚洲日本在线观看| 欧美日韩国产bt| 久久久久天天天天| 亚洲精品欧美专区| 久久久综合视频| 一区二区三区视频在线看| 国内精品久久久久久影视8 | 国产精品大片wwwwww| 久久久水蜜桃| 亚洲欧美日本日韩| 亚洲动漫精品| 久久在精品线影院精品国产| 一区二区三区你懂的| 亚洲欧洲中文日韩久久av乱码|