`

用第三方jar生成验证码

 
阅读更多

用kaptcha生成验证码:

package net.gplatform.sudoor.server.captcha.controller;

import java.awt.image.BufferedImage;

import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;

/**
 * This class is used to generate image. The image config is in common-config-sudoor.xml.
 * 
 * Validation In Application :
	protected void validateCaptcha(
					HttpServletRequest request,
					Object command,
					Errors errors) throws Exception {
			String captchaId = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
			String response = ((RegistrationVO) command).getCaptchaResponse();
	
			if (log.isDebugEnabled()) {
					log.debug("Validating captcha response: '" + response + "'");
			}
	
			if (!StringUtils.equalsIgnoreCase(captchaId, response)) {
					errors.rejectValue("captchaResponse", "error.invalidcaptcha",
									"Invalid Entry");
			}
	}

 * 
 * @author xufucheng
 *
 */

@Controller
public class CaptchaImageCreateController {
        private Producer captchaProducer = null;
        
        @Autowired
        public void setCaptchaProducer(Producer captchaProducer) {
                this.captchaProducer = captchaProducer;
        }

        @RequestMapping("/sudoor/captcha-image.html")
        public ModelAndView handleRequest(
                        HttpServletRequest request,
                        HttpServletResponse response) throws Exception {
                // Set to expire far in the past.
                response.setDateHeader("Expires", 0);
                // Set standard HTTP/1.1 no-cache headers.
                response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
                // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
                response.addHeader("Cache-Control", "post-check=0, pre-check=0");
                // Set standard HTTP/1.0 no-cache header.
                response.setHeader("Pragma", "no-cache");
                  
                // return a jpeg
                response.setContentType("image/jpeg");

                // create the text for the image
                String capText = captchaProducer.createText();
                
                // store the text in the session
                request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);

                // create the image with the text
                BufferedImage bi = captchaProducer.createImage(capText);

                ServletOutputStream out = response.getOutputStream();
                
                // write the data out
                ImageIO.write(bi, "jpg", out);
                try
                {
                        out.flush();
                }
                finally
                {
                        out.close();
                }
                return null;
        }
}

验证方法:

package net.gplatform.sudoor.server.captcha.model;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;

import com.google.code.kaptcha.Constants;

@Component
public class CaptchaValidator {
	public boolean validate(HttpServletRequest request) {
		String captchaFromSession = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
		String captchaFromPage = request.getParameter("_captcha");

		if (StringUtils.equalsIgnoreCase(captchaFromSession, captchaFromPage)) {
			return true;
		}
		return false;

	}
}

 

 HTML:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
	  xmlns:social="http://spring.io/springsocial"
	  xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
	  layout:decorator="layout">
	<head>
		<title>用户登录</title>
	<script type="text/javascript">
		 function refresh(obj) {  
		        obj.src = "/obiz/app/sudoor/captcha-image.html?"+Math.random();  
		    } 
		</script>
	</head>
	<body>
		<div id="content" layout:fragment="content">
		     <p><span style="color:red" th:text="${errorMsg}">13 February 2011</span></p>
			<form action="#" method="POST" th:action="@{/app/account/login}">
			<p>
				登录名:<input name ="username" type="text"></input>
			</p>
			<p>
				密码:<input name="password" type="password"></input>
			</p>
			<p>
			</p>
			<p>
				验证码:<input name="_captcha" type="text"></input>
				<img alt="验证码" style="cursor:pointer"  onclick="javascript:refresh(this);"  src="/obiz/app/sudoor/captcha-image.html"></img>
			</p>
			<p>
				<a href="">忘记登录密码?</a>
			</p>
			<p>
				<button type="submit" style="cursor:pointer">登录</button>
			</p>
			
			
			</form>
		</div>	
	</body>
</html>

 

 

 这也有个比较详细的介绍:

http://stone02111.iteye.com/blog/1688195

 

 

分享到:
评论

相关推荐

    JSP验证码生成需要的Jar包

    `pmiw`可能是某个第三方库或者项目的简写,它可能提供了验证码生成算法、图片处理等功能。具体的实现细节需要查看该库的文档或源代码才能得知。通常,验证码生成器会包含随机数生成、字符扭曲、颜色填充等组件,以便...

    kaptcha-2.3.jar 验证码生成

    第三方,验证码生成的工具类 可以在这里直接下载

    java第三方短信校验代码实例包含jar包

    这个“java第三方短信校验代码实例包含jar包”提供了一个方便的工具类,帮助开发者快速集成短信验证功能。下面将详细介绍该实例中的核心知识点。 1. **短信验证码的生成与发送** - 验证码通常由4-6位随机数字组成...

    验证码jar包

    在Java Web环境中,我们可以使用第三方库来实现验证码功能。例如,谷歌提供的reCAPTCHA是一个广泛使用的验证码服务。它不仅提供了传统的图像验证码,还有更先进的无感验证,可以检测到用户是否为真人,而无需用户...

    java发送短信6位随机验证码(2)

    短信发送通常涉及第三方短信服务提供商,这些服务商会提供API和SDK,开发者可以通过调用它们提供的接口来发送短信。在Java中,这个过程可能包括以下步骤: 1. **生成随机验证码**:首先,我们需要生成一个6位的...

    登陆验证码

    在SSM框架中实现验证码功能,首先需要集成验证码生成库,例如使用Google的Guava库中的RandomizedStrings类或者第三方的JCaptcha库。生成验证码时,可以创建一个随机字符串并将其与生成的图像一起保存到session中。当...

    kaptcha验证码

    在Java开发环境中,kaptcha是一个备受青睐的第三方插件,因其轻量级、易配置和高效性而受到开发者们的喜爱。 kaptcha的核心功能在于生成复杂且难以被机器识别的图像验证码,以此来区分真实用户和机器人。它的设计...

    JAVAWEB验证码功能实现附源代码

    在实际项目中,可能需要考虑更多的安全因素,例如使用更复杂的验证码生成算法、集成第三方库(如Google的reCAPTCHA)或者使用更安全的HTTP头(如Content-Security-Policy)来限制脚本执行。 通过分析和理解这个源...

    Android例子源码集成安卓主流优秀第三方组件框架.zip

    这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员快速开发自己的APP 已集成第三方开源...

    集成安卓主流优秀第三方组件框架.zip

    这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员快速开发自己的APP   已集成第三方...

    ValidateCode.jar

    在本案例中,"ValidateCode.jar" 是一个专门为生成图片验证码的第三方Java库。这个库使得开发者能够便捷地在他们的应用程序中集成验证码功能,无需从头开始编写复杂的图像生成和混淆算法。 验证码的主要作用包括: ...

    java 上传和验证码 源码

    jspsmartupload.jar是一个第三方库,它简化了在Java Servlet环境中处理这种类型的请求。这个库提供了方便的方法来解析请求中的多个部分,包括文件数据,而无需处理复杂的HTTP协议细节。 要使用jspsmartupload.jar,...

    Android集成主流优秀第三方组件框架

    这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、 以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员 快速开发自己的APP 已集成第三方...

    制作验证码

    通过这个项目,你可以学习到验证码的生成逻辑,理解如何在实际项目中集成和使用第三方库,以及如何利用Java Servlet处理HTTP请求并返回图像。这不仅对提升安全性有帮助,也能加深对Web开发的理解。

    集成目前Android主流优秀第三方组件

    这是一个集成目前Android主流优秀第三方组件、优秀好用的自定义控件、实用工具类封装、以及一些APP共通模块(比如:版本更新、意见反馈、引导界面等等)的开发包,帮助程序员快速开发自己的APP 已集成第三方开源...

    java收发短信jar版,不需要自己写代码

    短信发送服务通常需要与一个第三方短信服务提供商进行集成。这些提供商通常提供API接口,开发者需要注册账号获取API密钥或者访问令牌。在使用sendsMs-WjUtil01.jar时,可能需要将这些凭证配置到程序中,以便库能够...

    短信验证小程序

    这通常涉及到与第三方短信服务商提供的API进行交互。API(Application Programming Interface)是软件之间通信的一种方式,短信服务商通过API允许开发者在其平台上发送短信。接入过程包括以下步骤: 1. 注册:首先...

    imaging-01012005

    然而,这个JAR文件仍然可以在一些第三方仓库或归档网站上找到,以便于那些仍需依赖此组件的项目继续使用。对于还在使用这个过时版本的开发者来说,他们需要注意潜在的安全风险和兼容性问题,因为没有更新可能意味着...

    kaptcha232_jb51.rar

    【标题】"kaptcha232_jb51.rar" 提供的是一个关于验证码库 kaptcha 的版本,具体为 2.3.2 版本。kaptcha 是一个 Java 实现的开源验证码生成库,主要...同时,了解如何正确配置和集成第三方库也是开发过程中的基础技能。

Global site tag (gtag.js) - Google Analytics