`
vincent_com
  • 浏览: 43940 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类

Java生成验证码

 
阅读更多
kaptcha
1.
kaptcha一个很好用的验证码插件,java版的,很不错的一个插件,只用简单的在web.xml中设置几个属性,一个很漂亮的验证码就出来了。其他的参数都可以自己设置,最牛的就是提供了接口,可以自己定义哦。
[代码] html代码
 
<form action="submit.action">
 
    <img src="kaptcha.jpg" /> <input type="text" name="kaptcha" value="" />
 
</form>
[代码] web.xml
 
<servlet>
 
        <servlet-name>Kaptcha</servlet-name>
 
        <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
 
</servlet>
 
<servlet-mapping>
 
        <servlet-name>Kaptcha</servlet-name>
 
        <url-pattern>/kaptcha.jpg</url-pattern>
 
</servlet-mapping>
[代码] java代码
 
String kaptchaExpected = (String)request.getSession()
 
    .getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
 
String kaptchaReceived = request.getParameter("kaptcha");
 
 
 
if (kaptchaReceived == null || !kaptchaReceived.equalsIgnoreCase(kaptchaExpected))
 
{
 
    setError("kaptcha", "Invalid validation code.");
 
}
[代码] 根据点击显示验证码
 
<img src="/kaptcha" width="200" id="kaptchaImage" />
 
<script type="text/javascript">
 
    $(function(){
 
        $('#kaptchaImage').click(function () {
 
            $(this).attr('src', '/kaptcha.jpg?' + Math.floor(Math.random()*100) );
 
        })
 
    });
 
</script>
 
<br /><small>Can't read the image? Click it to get a new one.</small>






jcaptcha
2.
前言:
现在很多系统和网站使用场景都使用验证码来增强系统安全性。
下面介绍jcaptcha来产生验证码和验证 http://jcaptcha.sourceforge.net/

下面的程序代码参考和仿照了springside3的实现
1.在web.xml上增加验证码的过滤器

创建验证码图形的Filter
    <filter-mapping>
        <filter-name>jcaptchaFilter</filter-name>
        <url-pattern>/jcaptcha.jpg</url-pattern>
    </filter-mapping>

验证的Filter
    <filter-mapping>
        <filter-name>jcaptchaFilter</filter-name>
        <url-pattern>/check</url-pattern>
    </filter-mapping>

自己写用jcaptcha产生验证码和验证实现的filter
    <filter>
        <filter-name>jcaptchaFilter</filter-name>
        <filter-class>security.jcaptcha.JCaptchaFilter</filter-class>
        <init-param><!--失败时的返回页面 -->
            <param-name>failureUrl</param-name>
            <param-value>/head.vm</param-value>
        </init-param>
    </filter>


2.获取验证码
在介绍图形码过滤器前,介绍一下jcaptcha产生验证码的api和code
验证码产生和验证需要jcaptcha的com.octo.captcha.service.image.DefaultManageableImageCaptchaService类的服务

产生验证码,并以图片信息输出到客户端
获取验证码的方法: captchaService.getChallengeForID(id)
根据你的id随机产生验证码

代码片段
protected void genernateCaptchaImage(final HttpServletRequest request, final HttpServletResponse response)
            throws IOException {

//设置response,输出图片客户端不缓存
response.setDateHeader("Expires", 1L);
response.addHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache, no-store, max-age=0");
response.setContentType("image/jpeg");

ServletOutputStream out = response.getOutputStream();

//获取验证码
  try {
            String captchaId = request.getSession(true).getId();
	      //用session的id来产生验证码
            BufferedImage challenge = (BufferedImage) captchaService.getChallengeForID(captchaId, request.getLocale());//获取验证码
            ImageIO.write(challenge, "jpg", out);
            out.flush();
      } catch (CaptchaServiceException e) {
            System.out.println(e);
       } finally {
            out.close();
       }
}

在显示层,展示验证码<img id="captchaImg" src="显示验证码的过滤器url"/>


3.验证码验证
在介绍图形码过滤器前,介绍一下jcaptcha产生验证码的api和code
验证码产生和验证需要jcaptcha的com.octo.captcha.service.image.DefaultManageableImageCaptchaService类的服务

产生验证码,并以图片信息输出到客户端
获取验证码的方法: captchaService.validateResponseForID(captchaID, 输入的验证码);
返回值true 表示验证通关,false表示验证还没有通过

代码片段
    protected boolean validateCaptchaChallenge(final HttpServletRequest request) {
        try {
            //获取产生验证码的id,用session的id来产生验证码
            String captchaID = request.getSession().getId();
           //获取输入的验证码
            String challengeResponse = request.getParameter(captchaParamterName);
            return captchaService.validateResponseForID(captchaID, challengeResponse);
        } catch (CaptchaServiceException e) {
            System.out.println(e);
            return false;
        }
    }
分享到:
评论

相关推荐

    java生成验证码的参考资料(中英文验证码)

    总的来说,Java生成验证码是一个结合了数学随机性、图像处理和安全性考量的过程。通过学习和使用`kaptcha`或其他验证码生成库,开发者能够快速地在自己的项目中实现这一功能。同时,理解和实现验证码的生成也能加深...

    java生成验证码demo

    这个"java生成验证码demo"提供了生成自定义验证码图片的方法,包括设置图片尺寸、验证码长度,以及添加各种视觉混淆元素,以增加机器识别的难度。 首先,我们要理解验证码的基本原理。它通常由一组随机生成的字母或...

    java生成图片的验证码工具类及其使用

    java生成验证码的工具类,这个现在有依赖可以直接引入调用,但这个工具类没有引入依赖,大家也容易看懂代码,理解其含义。也可直接去工具类中调整生成验证码的宽度、高度、颜色、背景颜色、生成的随机数数量、干扰线...

    java生成验证码源码包括彩色验证码

    java生成验证码源码包括彩色验证码 包括jsp生成验证码和彩色验证码

    java生成验证码代码

    在Java中生成验证码涉及到图像处理、随机数生成以及字符编码等多个知识点。以下将详细介绍如何在Java中创建一个能生成中文、英文和数字的验证码。 1. **随机数生成**:首先,我们需要生成随机的验证码字符。Java...

    java生成验证码代码(工程)

    java生成验证码代码 主要:一个生成验证码的servlet,一个jsp页面,另外还需要配置下web.xml即可

    java生成验证码图片的文件已完成测试

    java生成验证码图片的文件已完成测试

    用JAVA生成验证码的操作

    ### 使用Java生成验证码的深入解析 #### 知识点概览 在当今互联网时代,验证码作为网站和应用程序安全的重要组成部分,被广泛应用于用户登录、表单提交等场景中,以防止自动化工具的恶意操作。本文将详细介绍如何...

    Java生成验证码(包含gif动画验证码)

    总的来说,Java生成验证码涉及图像处理、随机数生成、文本渲染等多个技术点。通过学习和实践,开发者可以创建出既安全又用户体验良好的验证码系统。对于动态GIF验证码,了解并使用第三方库如`gif4j`能简化开发过程。

    java生成验证码

    通过提供的`ValiImgServlet.java`和`login.jsp`文件,我们可以深入理解Java生成验证码的基本流程和关键组件。 首先,`ValiImgServlet.java`是一个Servlet,它负责在服务器端生成验证码图像。在Java中,生成验证码...

    java 生成验证码

    下面我们将深入探讨Java生成验证码的相关知识点。 1. **验证码基本原理** 验证码的基本思想是生成一段随机的字符串或数字,然后通过图像或其他形式展示给用户。用户需要正确输入这段字符串才能完成相应的操作。...

    使用java生成验证码

    使用Java生成验证码的工具类,使用说明:http://blog.csdn.net/wqh8522/article/details/72791218

    JAVA生成验证码图片工具类

    用于java生成验证码图片的工具类。(源码 .java 文件)

    java生成随机验证码

    java生成随机验证码, 这是一个demo, eclipse项目,导入eclipse即可

Global site tag (gtag.js) - Google Analytics