• <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 逛奔的蝸牛 閱讀(2930) 評論(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精品久久只有精品| 成人a毛片久久免费播放| 天天久久狠狠色综合| 色欲综合久久躁天天躁| 久久综合狠狠综合久久| 国产香蕉97碰碰久久人人| 99久久国产综合精品女同图片| 久久精品无码专区免费东京热| 久久亚洲国产欧洲精品一| 久久无码AV中文出轨人妻| 伊人久久大香线蕉av一区| 色综合久久88色综合天天| 国产精品成人久久久| 色综合久久最新中文字幕| 久久天天躁狠狠躁夜夜96流白浆| 国产国产成人久久精品| 久久午夜羞羞影院免费观看| 日韩欧美亚洲国产精品字幕久久久| 无码精品久久久天天影视| 色诱久久av| 久久综合视频网站| 狠狠综合久久综合中文88| 久久精品国产亚洲AV香蕉| 久久无码AV中文出轨人妻| 久久亚洲欧洲国产综合| 国产福利电影一区二区三区久久老子无码午夜伦不 | AV无码久久久久不卡蜜桃| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 精品久久久久久亚洲精品 | 99精品国产在热久久无毒不卡| 亚洲精品综合久久| 精品久久国产一区二区三区香蕉| 99国产精品久久| 久久精品人人槡人妻人人玩AV| 久久久久久久波多野结衣高潮| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 国产精品亚洲综合专区片高清久久久 | 欧美国产成人久久精品| 久久精品国产日本波多野结衣| 久久人人爽人人澡人人高潮AV|