<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-200  評論-148  文章-15  trackbacks-0

    安裝

    Add jcaptcha-all.jar (provided in bin-distribution) and ehcache.jar (not provided see ehcache site) to your application class path, ie in you WEB-INF/lib folder.

    實例一個jcaptcha服務,注意,必須是單例模式的
    import com.octo.captcha.service.image.ImageCaptchaService;
    import com.octo.captcha.service.image.DefaultManageableImageCaptchaService;

    public class CaptchaServiceSingleton {
    ???
    ??? private static ImageCaptchaService instance = new DefaultManageableImageCaptchaService();
    ???
    ??? public static ImageCaptchaService getInstance(){
    ??????? return instance;
    ??? }
    }
    注:以上是默認的一個實現,下面是其他更多的實現

    SimpleListSoundCaptchaEngine?? //還可以用聲音,真爽哦
    SpellerSoundCaptchaEngine
    SpellerSoundCaptchaEngine
    DefaultGimpyEngineCaptcha???????????
    BaffleListGimpyEngineCaptcha???????????
    BasicListGimpyEngineCaptcha???????????
    DeformedBaffleListGimpyEngineCaptcha???????????
    DoubleRandomListGimpyEngineCaptcha???????????
    SimpleListImageCaptchaEngineCaptcha???????????
    SimpleFishEyeEngineCaptcha
    具體請參考官方說明

    編寫一個產生圖片的servlet


    import com.octo.captcha.service.CaptchaServiceException;
    import com.sun.image.codec.jpeg.JPEGCodec;
    import com.sun.image.codec.jpeg.JPEGImageEncoder;

    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;


    public class ImageCaptchaServlet extends HttpServlet {


    ??? public void init(ServletConfig servletConfig) throws ServletException {

    ??????? super.init(servletConfig);

    ??? }


    ??? protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws ServletException, IOException {
    ???????
    ?????? byte[] captchaChallengeAsJpeg = null;
    ?????? // the output stream to render the captcha image as jpeg into
    ??????? ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
    ??????? try {
    ??????? // get the session id that will identify the generated captcha.
    ??????? //the same id must be used to validate the response, the session id is a good candidate!
    ??????? String captchaId = httpServletRequest.getSession().getId();
    ??????? // call the ImageCaptchaService getChallenge method
    ??????????? BufferedImage challenge =
    ??????????????????? CaptchaServiceSingleton.getInstance().getImageChallengeForID(captchaId,
    ??????????????????????????? httpServletRequest.getLocale());
    ???????????
    ??????????? // a jpeg encoder
    ??????????? JPEGImageEncoder jpegEncoder =
    ??????????????????? JPEGCodec.createJPEGEncoder(jpegOutputStream);
    ??????????? jpegEncoder.encode(challenge);
    ??????? } catch (IllegalArgumentException e) {
    ??????????? httpServletResponse.sendError(HttpServletResponse.SC_NOT_FOUND);
    ??????????? return;
    ??????? } catch (CaptchaServiceException e) {
    ??????????? httpServletResponse.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    ??????????? return;
    ??????? }

    ??????? captchaChallengeAsJpeg = jpegOutputStream.toByteArray();

    ??????? // flush it in the response
    ??????? httpServletResponse.setHeader("Cache-Control", "no-store");
    ??????? httpServletResponse.setHeader("Pragma", "no-cache");
    ??????? httpServletResponse.setDateHeader("Expires", 0);
    ??????? httpServletResponse.setContentType("image/jpeg");
    ??????? ServletOutputStream responseOutputStream =
    ??????????????? httpServletResponse.getOutputStream();
    ??????? responseOutputStream.write(captchaChallengeAsJpeg);
    ??????? responseOutputStream.flush();
    ??????? responseOutputStream.close();
    ??? }
    }

    為servlet修改web.xml配置文件
    <servlet>
    ??????? <servlet-name>jcaptcha</servlet-name>
    ??????? <servlet-class>ImageCaptchaServlet</servlet-class>
    ??????? <load-on-startup>0</load-on-startup>
    ??? </servlet>


    <servlet-mapping>
    ??????? <servlet-name>jcaptcha</servlet-name>
    ??????? <url-pattern>/jcaptcha</url-pattern>
    </servlet-mapping>


    編寫你的客戶端的展示
    <img src="jcaptcha">
    <input type='text' name='j_captcha_response' value=''>
    上面的src="jcaptcha"? 就是調用了上面的servlet,text里是用戶填寫的確認驗證碼

    后臺邏輯驗證
    Boolean isResponseCorrect =Boolean.FALSE;
    ?????????? //remenber that we need an id to validate!
    ?????????? String captchaId = httpServletRequest.getSession().getId();
    ?????????? //retrieve the response
    ?????????? String response = httpServletRequest.getParameter("j_captcha_response");
    ?????????? // Call the Service method
    ??????????? try {
    ??????????????? isResponseCorrect = CaptchaServiceSingleton.getInstance().validateResponseForID(captchaId,
    ??????????????????????? response);
    ??????????? } catch (CaptchaServiceException e) {
    ???????????????? //should not happen, may be thrown if the id is not valid
    ??????????? }

    posted on 2006-10-28 10:05 無聲 閱讀(641) 評論(0)  編輯  收藏 所屬分類: 職場生活
    主站蜘蛛池模板: 亚洲av无码片vr一区二区三区| 亚洲成无码人在线观看| 国产综合激情在线亚洲第一页| 无人在线观看免费高清视频| 久久久久久亚洲精品成人| 精品亚洲永久免费精品| 亚洲av无码成人黄网站在线观看| 大妹子影视剧在线观看全集免费 | 成年人免费观看视频网站| 亚洲不卡1卡2卡三卡2021麻豆| 日本zzzzwww大片免费| 亚洲欧洲日产韩国在线| 黄瓜视频影院在线观看免费| 久久亚洲国产最新网站| 国产美女精品久久久久久久免费| 亚洲国产精品成人AV在线| 免费成人黄色大片| 黄色视频在线免费观看| 亚洲AV永久无码精品一百度影院| 人妻无码久久一区二区三区免费| 亚洲无成人网77777| 好大好深好猛好爽视频免费| 黄色一级毛片免费看| 伊人久久精品亚洲午夜| 久久精品一本到99热免费| avtt天堂网手机版亚洲| 国产精品无码一二区免费 | 亚洲日韩国产欧美一区二区三区 | 免费大片黄手机在线观看| 久久国产免费直播| 18亚洲男同志videos网站| 性做久久久久免费观看| 免费看无码特级毛片| 亚洲一卡2卡3卡4卡国产网站| 国产精品深夜福利免费观看| 中国毛片免费观看| 亚洲性线免费观看视频成熟| 亚洲日韩在线观看| 成人免费福利视频| 美女被爆羞羞网站在免费观看| 久久精品国产亚洲av四虎|