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

            逛奔的蝸牛

            我不聰明,但我會很努力

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

            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 逛奔的蝸牛 閱讀(2931) 評論(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 鄺晶武
            網頁生成版的怎么用?  回復  更多評論
              

            久久久久综合网久久| 麻豆精品久久精品色综合| 婷婷久久综合| 国产精品亚洲综合久久 | 久久精品中文騷妇女内射| 色婷婷综合久久久久中文 | 伊人色综合久久天天人手人婷 | 久久青青草原综合伊人| 久久99热这里只有精品国产 | 香港aa三级久久三级老师2021国产三级精品三级在 | 久久久久久久女国产乱让韩 | 91麻精品国产91久久久久| 青草久久久国产线免观| 久久久亚洲欧洲日产国码二区| 国产精品久久午夜夜伦鲁鲁| 国产精品免费久久久久久久久| 久久久无码精品亚洲日韩京东传媒 | 久久精品人人做人人爽电影| 中文字幕久久亚洲一区| 国产精品欧美久久久天天影视| 一级做a爰片久久毛片毛片| 国产精品久久久久久一区二区三区 | 亚洲欧美成人久久综合中文网| 久久久久久久久无码精品亚洲日韩| 色99久久久久高潮综合影院| 久久精品国产99国产精偷| 久久亚洲日韩精品一区二区三区| 久久久免费观成人影院| 亚洲国产精品久久久久婷婷老年| 97热久久免费频精品99| 国产激情久久久久久熟女老人| 亚洲精品久久久www| 久久精品国产72国产精福利| 俺来也俺去啦久久综合网| 日韩精品久久久肉伦网站| 久久精品国产亚洲AV久| 伊人久久大香线蕉综合热线| 伊人久久大香线蕉无码麻豆 | 一本大道加勒比久久综合| 国产精品一久久香蕉国产线看| 无码国产69精品久久久久网站|