<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)  編輯  收藏 所屬分類: 職場生活
    主站蜘蛛池模板: 免费萌白酱国产一区二区| 老司机福利在线免费观看| 最新精品亚洲成a人在线观看| 黄色网址免费大全| 爱丫爱丫影院在线观看免费| 美女裸体无遮挡免费视频网站| 亚洲三级中文字幕| 亚洲丁香色婷婷综合欲色啪| 国产亚洲精品看片在线观看| 国产精品成人免费综合| 免费在线观看的网站| 久久青草精品38国产免费| fc2免费人成在线视频| 色窝窝亚洲av网| 亚洲国产精品ⅴa在线观看| 亚洲另类古典武侠| 久久精品国产亚洲AV香蕉| 亚洲av伊人久久综合密臀性色| 国产成人亚洲综合| 亚洲精品成人网久久久久久| 四虎AV永久在线精品免费观看| 免费国产黄线在线观看| 97免费人妻无码视频| 97性无码区免费| 中文字幕人成无码免费视频| 国产精品永久免费10000| 91在线老王精品免费播放| 99热这里只有精品免费播放| 免费网站看av片| 最近免费中文字幕大全免费版视频 | 亚洲动漫精品无码av天堂| 亚洲一区爱区精品无码| 在线亚洲精品福利网址导航| 久99精品视频在线观看婷亚洲片国产一区一级在线 | 美女被免费网站在线视频免费 | 国产大片线上免费看| 国产免费久久精品久久久| 四虎永久成人免费影院域名| 免费**毛片在线播放直播| 亚洲av无码天堂一区二区三区| 四虎永久免费地址在线网站|