• <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 鄺晶武
            網頁生成版的怎么用?  回復  更多評論
              

            久久久久久久人妻无码中文字幕爆| 久久久久女教师免费一区| 久久婷婷五月综合97色直播| 伊人精品久久久久7777| 亚洲伊人久久精品影院| 久久婷婷五月综合97色一本一本| 无码伊人66久久大杳蕉网站谷歌| 久久WWW免费人成一看片| 日韩人妻无码精品久久久不卡| 国产午夜久久影院| 久久久免费观成人影院| 人人狠狠综合久久88成人| 狠狠人妻久久久久久综合| 波多野结衣AV无码久久一区| 欧美久久精品一级c片片| 亚洲精品乱码久久久久久| 久久99精品免费一区二区| 亚洲综合久久久| 久久久久亚洲精品天堂久久久久久 | 狠狠色丁香婷婷综合久久来来去| 久久久久久青草大香综合精品 | 久久成人国产精品免费软件| 久久99精品国产99久久| 欧美日韩精品久久久免费观看| 国产精品免费久久久久久久久| 久久久国产视频| 天堂无码久久综合东京热| 97久久久久人妻精品专区| 日韩精品久久久久久久电影蜜臀| 久久久久久久久久久精品尤物 | 久久男人中文字幕资源站| 精品久久久久久综合日本| www性久久久com| 日韩人妻无码精品久久久不卡| 久久99久国产麻精品66| 综合久久精品色| 久久无码AV中文出轨人妻| 久久国产欧美日韩精品免费| 久久亚洲国产最新网站| 久久这里只有精品视频99| 亚洲乱码日产精品a级毛片久久|