JCaptcha 实例

What's JCaptcha?

如果你登录csdn的话,需要输入验证码, JCaptcha就是显示和效验那张图片上的文字的东西.

 

Get more detail?

上官网吧,其它地方不可信,包括本贴. http://jcaptcha.sourceforge.net/

 

以下是我的例子.

 

 

当然首先你要加入 JCaptcha jar 包吧 

jcaptcha-1.0-bin.zip

http://nchc.dl.sourceforge.net/sourceforge/jcaptcha/jcaptcha-1.0-bin.zip

 

 

 

配置文件:

web.xml

 

add fellow in to web.xml

 

 

<servlet>

        <servlet-name>jcaptcha</servlet-name>

        <servlet-class>*****servlet.ImageCaptchaServlet</servlet-class>  

<!--the stars means privacy 我的隐私 -->

        <load-on-startup>0</load-on-startup>

    </servlet>

 

    <servlet-mapping>

        <servlet-name>jcaptcha</servlet-name>

        <url-pattern>/jcaptcha</url-pattern>

    </servlet-mapping>

 

1-----------------------------------

CaptchaService.java

 

 

import com.octo.captcha.service.image.ImageCaptchaService;

import com.octo.captcha.service.image.DefaultManageableImageCaptchaService;

 

public class CaptchaService {

 

    private static ImageCaptchaService instance = new DefaultManageableImageCaptchaService();

 

    public static ImageCaptchaService getInstance(){

        return instance;

    }

}

 

 

2---------------------------------------

 

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;

        ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();

        try {

        String captchaId = httpServletRequest.getSession().getId();

            BufferedImage challenge =

                    CaptchaService

                            .getInstance().getImageChallengeForID(captchaId,

                            httpServletRequest.getLocale());

 

            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();

 

        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();

    }

}

 

 

3--------------------------------------------------------

 

<tr>

    <td>请输入验证码/please enter what you saw in the picture</td>

    <td>

        <img src="/jcaptcha"><br/> 

<!-- 上面对应 是的 web.xml 的<servlet>与<servlet-mapping>-->

            <input type='text' name='j_captcha_response' value=''>

    </td>

</tr>

 

 

 

总结:

 1,看官方文档,不会英语就别学计算机了,除非有一天,中国人重撑世界的陀.

 2,照里面的小例子, ctrl + c / ctrl +v . 

 3,以后再慢慢调试font, color

 4, 详情加我Q:279938293(工作时专心工作,不上Q)/ email : cafecheng@163.com最好.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值