• <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>

            逛奔的蝸牛

            我不聰明,但我會(huì)很努力

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

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

               patchca使用LGPL協(xié)議: GNU Lesser General Public License

            2. 請(qǐng)求驗(yàn)證碼的 JSP: validate.jsp

            3. 產(chǎn)生驗(yàn)證碼的 Servlet: ValidationCode.java

            4. 驗(yàn)證驗(yàn)證碼的 Servlet: ValidateCode.java


            驗(yàn)證過(guò)程: validate.jsp請(qǐng)求驗(yàn)證碼 -> ValidationCode.java生成驗(yàn)證碼圖片和相應(yīng)的字符給validate.jsp -> 用戶輸入驗(yàn)證碼 -> ValidateCode.java驗(yàn)證用戶的驗(yàn)證碼是否輸入正確.

            ================================== 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中取得驗(yàn)證碼與用戶輸入的驗(yàn)證碼進(jìn)行比較

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

                    

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

                    if (validateCode.equalsIgnoreCase(storedValidateCode)) {

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

                    } else {

                        response.getWriter().println("驗(yàn)證碼輸入錯(cuò)誤: " + 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();

                }


                // 關(guān)鍵之處,產(chǎn)生圖片


                @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()); // 驗(yàn)證碼保存在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 逛奔的蝸牛 閱讀(2936) 評(píng)論(4)  編輯 收藏 引用 所屬分類: Java

            評(píng)論

            # re: Java:Servlet生成驗(yàn)證碼 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);
            }
            %>  回復(fù)  更多評(píng)論
              

            # re: Java:Servlet生成驗(yàn)證碼 2011-05-25 12:19 sophy
            web。xml怎么配置的  回復(fù)  更多評(píng)論
              

            # re: Java:Servlet生成驗(yàn)證碼 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;

            這是需要手動(dòng)導(dǎo)入的包么???  回復(fù)  更多評(píng)論
              

            # re: Java:Servlet生成驗(yàn)證碼 2014-02-05 13:27 鄺晶武
            網(wǎng)頁(yè)生成版的怎么用?  回復(fù)  更多評(píng)論
              

            亚洲狠狠婷婷综合久久蜜芽| 久久香蕉综合色一综合色88| 久久伊人精品青青草原高清| 久久久精品国产| 日韩AV毛片精品久久久| 9999国产精品欧美久久久久久| 久久久久久综合一区中文字幕| 久久综合狠狠综合久久综合88| 久久精品无码专区免费东京热 | 国产精品免费久久久久久久久| 欧美大香线蕉线伊人久久| 久久99国内精品自在现线| 欧美亚洲色综久久精品国产| 精品久久无码中文字幕| 久久精品九九亚洲精品| 国产成人精品久久亚洲高清不卡| 久久精品国内一区二区三区| 久久久久亚洲AV成人网人人网站| 久久精品成人免费观看97| 久久这里都是精品| 亚洲va久久久噜噜噜久久狠狠| 青青青青久久精品国产| 久久精品国产一区二区三区| 99久久这里只精品国产免费| 丁香色欲久久久久久综合网| 久久精品草草草| 久久男人AV资源网站| 久久精品亚洲一区二区三区浴池 | 久久久91人妻无码精品蜜桃HD| 国产精品综合久久第一页| 久久人人爽人人人人爽AV| 精品无码久久久久国产| 狠狠色伊人久久精品综合网 | 久久中文字幕精品| 亚洲AV乱码久久精品蜜桃| 成人a毛片久久免费播放| 久久久精品日本一区二区三区 | 人人狠狠综合久久亚洲88| 精品久久久久中文字幕一区| 久久亚洲国产精品成人AV秋霞| 天天爽天天爽天天片a久久网|