`

JCaptcha-SpringMVC集成

 
阅读更多

GMail验证码样式的图片引擎:

 

import java.awt.Color;
import java.awt.Font;
import java.awt.image.ImageFilter;

import com.octo.captcha.component.image.backgroundgenerator.BackgroundGenerator;
import com.octo.captcha.component.image.backgroundgenerator.UniColorBackgroundGenerator;
import com.octo.captcha.component.image.color.RandomListColorGenerator;
import com.octo.captcha.component.image.deformation.ImageDeformation;
import com.octo.captcha.component.image.deformation.ImageDeformationByFilters;
import com.octo.captcha.component.image.fontgenerator.FontGenerator;
import com.octo.captcha.component.image.fontgenerator.RandomFontGenerator;
import com.octo.captcha.component.image.textpaster.DecoratedRandomTextPaster;
import com.octo.captcha.component.image.textpaster.TextPaster;
import com.octo.captcha.component.image.textpaster.textdecorator.TextDecorator;
import com.octo.captcha.component.image.wordtoimage.DeformedComposedWordToImage;
import com.octo.captcha.component.image.wordtoimage.WordToImage;
import com.octo.captcha.component.word.FileDictionary;
import com.octo.captcha.component.word.wordgenerator.ComposeDictionaryWordGenerator;
import com.octo.captcha.component.word.wordgenerator.WordGenerator;
import com.octo.captcha.engine.image.ListImageCaptchaEngine;
import com.octo.captcha.image.gimpy.GimpyFactory;

/**
 * 仿照JCaptcha2.0编写GMail验证码样式的图片引擎.
 * 
 * @author calvin
 */
public class GMailEngine extends ListImageCaptchaEngine {
	@Override
	protected void buildInitialFactories() {
		int minWordLength = 4;
		int maxWordLength = 5;
		int fontSize = 50;
		int imageWidth = 250;
		int imageHeight = 100;

		//word generator
		WordGenerator dictionnaryWords = new ComposeDictionaryWordGenerator(new FileDictionary("toddlist"));

		//word2image components
		TextPaster randomPaster = new DecoratedRandomTextPaster(minWordLength, maxWordLength,
				new RandomListColorGenerator(new Color[] { new Color(23, 170, 27), new Color(220, 34, 11), new Color(23, 67, 172) }), new TextDecorator[] {});
		BackgroundGenerator background = new UniColorBackgroundGenerator(imageWidth, imageHeight, Color.white);
		FontGenerator font = new RandomFontGenerator(fontSize, fontSize, new Font[] {
				new Font("nyala", Font.BOLD, fontSize), new Font("Bell MT", Font.PLAIN, fontSize),
				new Font("Credit valley", Font.BOLD, fontSize) });

		ImageDeformation postDef = new ImageDeformationByFilters(new ImageFilter[] {});
		ImageDeformation backDef = new ImageDeformationByFilters(new ImageFilter[] {});
		ImageDeformation textDef = new ImageDeformationByFilters(new ImageFilter[] {});

		WordToImage word2image = new DeformedComposedWordToImage(font, background, randomPaster, backDef, textDef, postDef);
		addFactory(new GimpyFactory(dictionnaryWords, word2image));
	}

}

 产生图片单例:

 

 

import com.octo.captcha.service.captchastore.FastHashMapCaptchaStore;
import com.octo.captcha.service.image.DefaultManageableImageCaptchaService;
import com.octo.captcha.service.image.ImageCaptchaService;

/**
 * 按照官方的做法: 一定为单例
 */
public class CaptchaServiceSingleton {
	private static ImageCaptchaService instance = new DefaultManageableImageCaptchaService(new FastHashMapCaptchaStore(), new GMailEngine(), 180, 100000 , 75000);
//	private static ImageCaptchaService instance=new DefaultManageableImageCaptchaService();
    public static ImageCaptchaService getInstance(){
        return instance;
    }
}

 SpringMVC:Controller:

 

 

@RequestMapping(value="getCaptcha",headers = "Accept=image/jpeg, image/jpg, image/png, image/gif") //,produces = "image/jpg"
	public @ResponseBody byte[] getCaptcha(HttpServletRequest request,HttpServletResponse response) throws Exception {
		String captchaId = request.getSession(true).getId();
		BufferedImage challenge = (BufferedImage)CaptchaServiceSingleton.getInstance().getChallengeForID(captchaId, request.getLocale());
		ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
		ImageIO.write(challenge, "jpg", byteArrayOutputStream);
		return byteArrayOutputStream.toByteArray();
	}

 页面:

 

<label>验证码:</label>
						<input class="jcaptcha_code" name="jcaptcha_code" type="text" size="6" />
						<span><img id="img_jcaptcha" src="${ctx}/login/getCaptcha.htm" alt="" width="75" height="24" onclick="changeJcaptchaSrc();" /></span>

<script type="text/javascript">
function changeJcaptchaSrc(){
		document.getElementById("img_jcaptcha").src='${ctx}/login/getCaptcha.htm?_='+(new Date()).getTime();
		}
</script>

 

分享到:
评论

相关推荐

    网上书城项目(采用框架Spring-SpringMVC-MyBatis).zip

    这是一个网上书城项目,采用当前最流行的框架Spring-SpringMVC-MyBatis设计,主要是对之前用Jsp/Servlet做的一些优化,重构了整个系统,感觉还不错,学到了很多新的知识,能对SSM框架熟练的运用了。 这是一个网上...

    swagger-springmvc-1.0.2

    5. **Sources jar**:`swagger-springmvc-1.0.2-sources.jar`则包含了源代码,这对于开发者调试和学习库的内部实现非常有帮助。通过源码,开发者可以深入理解库的工作原理,以及如何自定义和扩展其功能。 6. **核心...

    微信 java weixin-java-tools-springmvc-master

    微信 java weixin-java-tools-springmvc-master 微信 java weixin-java-tools-springmvc-master

    ssm-springMVC-整合Quartz(解决了无法注入service问题).doc

    ssm-springMVC-整合Quartz(解决了无法注入service问题).doc

    第5节 完整版 Java开发实训课程系列-SpringMVC框架技术 全套PPT课件资源 共9个章节 含案例源码.rar

    完整版 Java开发实训课程系列-SpringMVC框架技术教程 第1章 springmvc概述 (共27页).pptx 完整版 Java开发实训课程系列-SpringMVC框架技术教程 第2章 处理器映射器和适配器 (共22页).pptx 完整版 Java开发实训...

    完整版 Java开发实训课程系列-SpringMVC框架技术教程 第3章 映射请求和返回值 (共18页).pptx

    完整版 Java开发实训课程系列-SpringMVC框架技术教程 第1章 springmvc概述 (共27页).pptx 完整版 Java开发实训课程系列-SpringMVC框架技术教程 第2章 处理器映射器和适配器 (共22页).pptx 完整版 Java开发实训...

    jetty-maven-springMVC-mybitas-eclipse集成demo

    jetty-maven-springMVC-mybitas-eclipse集成demo 数据库配置:/jetty-maven/src/main/resources/applicationContext.xml 数据库导入到test数据库:/jetty-maven/src/main/resources/hms_user.sql 配置好maven环境,...

    jetbrick-springmvc jar包(包含源码)

    3. **模板引擎**:它集成了一些常见的模板引擎,如FreeMarker、Velocity,提供了统一的API,使得在不同的模板引擎间切换变得更加容易。 4. **数据绑定**:Jetbrick-SpringMVC增强了SpringMVC的数据绑定能力,支持...

    spring-springMVC-myBatis集成开发环境

    这个名为"spring-springMVC-myBatis集成开发环境"的压缩包,提供了一个完整的SSM(Spring、SpringMVC、MyBatis)开发环境,方便开发者快速搭建项目并进行开发。 **Spring框架**: Spring是Java领域的一个全功能框架...

    dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis, dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合.zip

    dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis, dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb-redis整合

    washcar-springmvc+mybitas.zip

    这个项目不仅包含了后端业务逻辑处理,还集成了MySQL数据库,提供了一个可以直接运行的环境,对于学习SSM框架以及实际项目开发具有很好的参考价值。 **1. Spring 框架** Spring 是一个开源的Java平台,它为构建企业...

    helloworld------springMVC

    SpringMVC是Spring框架的一个模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构支持。"helloworld------springMVC"项目是一个简单的示例,旨在引导初学者入门SpringMVC的基本概念和配置。让我们深入探讨...

    bfmvc-Tomcat-SpringMvc

    首先,确保Tomcat已安装并配置好,然后将bfmvc-Tomcat-SpringMvc的`webapp`目录拷贝到Tomcat的`webapps`目录下,或者通过IDE(如IntelliJ IDEA或Eclipse)的集成部署功能部署。运行Tomcat服务器,通过浏览器访问指定...

    SpringMVC ---- HelloWorld ---- 代码

    SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- HelloWorld ---- 代码 SpringMVC ---- Hello...

    14-SpringMVC.pdf

    SpringMVC是Spring框架的一个重要组成部分,用于简化Web层的开发。SpringMVC将Web层的请求处理逻辑分离为控制器、视图和模型三个核心组件,以实现MVC(Model-View-Controller)设计模式。现在,我们将详细介绍...

    zzw-springmvc项目

    此外,SpringMVC还支持文件上传和下载,AOP(面向切面编程)集成,以及国际化和本地化等功能。在"zzw-springmvc项目"中,如果涉及这些功能,我们将手动实现相关组件,例如文件上传需要配置MultipartResolver,AOP则...

    吴天雄--SpringMVC笔记.doc

    - SpringMVC 集成了 Spring 框架的其他功能,如依赖注入(DI)和面向切面编程(AOP)。 3. **SpringMVC 与 Struts2 的比较** - 入口不同:SpringMVC 由 Servlet 控制,Struts2 通过 Filter 实现。 - 设计模式:...

    dubbo-admin-2.5.4,dubbo-springmvc-zookpper集成配置详解

    接下来,我们将重点关注`dubbo-springmvc-zookeeper`的集成配置。在SpringMVC中使用Dubbo,首先需要在项目中引入Dubbo的相关依赖,包括`dubbo`、`spring-context-support`以及`zookeeper`客户端库。然后,配置`dubbo...

    OA系统-springMVC/Mybatis/Mysql/Bootstrap

    OA系统-springMVC/Mybatis/Mysql/Bootstrap OA系统-springMVC/Mybatis/Mysql/Bootstrap OA系统-springMVC/Mybatis/Mysql/Bootstrap

Global site tag (gtag.js) - Google Analytics