• <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久久无色码中文字幕| 无码人妻久久一区二区三区免费丨| .精品久久久麻豆国产精品| 91久久精一区二区三区大全| 国产激情久久久久影院老熟女免费 | 亚洲国产成人久久精品影视 | 久久91精品国产91久久麻豆| 91精品国产91久久久久久| 亚洲v国产v天堂a无码久久| 久久久久久久人妻无码中文字幕爆 | 久久久久无码国产精品不卡| 亚洲AV无码久久精品成人| 国产A级毛片久久久精品毛片| 狠狠色丁香久久婷婷综合图片| 91久久精品91久久性色| 久久人人爽人人爽人人片AV不| 久久香蕉一级毛片| 7777久久久国产精品消防器材 | 久久精品一本到99热免费| 人妻中文久久久久| 国产精品亚洲美女久久久| 国产精品久久毛片完整版| 久久99这里只有精品国产| 久久99精品久久久久久秒播| 欧美丰满熟妇BBB久久久| 久久天天躁夜夜躁狠狠| 久久久精品视频免费观看| 久久青草国产手机看片福利盒子| 无码AV波多野结衣久久| 色88久久久久高潮综合影院| 久久中文字幕人妻丝袜| 久久久黄色大片| 国产精品成人久久久| 亚洲国产成人精品久久久国产成人一区二区三区综 | 久久久无码精品午夜| 久久精品二区| 日韩十八禁一区二区久久| 久久综合视频网站| 久久国产亚洲精品| 亚洲中文字幕无码久久综合网| 亚洲∧v久久久无码精品|