`

jcaptcha 之 声音验证码

    博客分类:
  • java
 
阅读更多
freetts .jar 没有的话 下面有附件下载

/*
 * JCaptcha, the open source java framework for captcha definition and integration
 * Copyright (c)  2007 jcaptcha.net. All Rights Reserved.
 * See the LICENSE.txt file distributed with this package.
 */

package captcha.servlet;

import java.io.ByteArrayOutputStream;
import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;

import captcha.CaptchaServiceSingleton;

import com.octo.captcha.service.CaptchaServiceException;
import com.octo.captcha.service.sound.SoundCaptchaService;

public class SoundCaptchaServlet extends HttpServlet implements Servlet {
	
	/** 
	 * simple-servlet-image-sample   
	 * @Title: SoundCaptchaServlet.java
	 * @Package captcha.servlet
	 * @Description: TODO
	 * @author liazhou 
	 * @date 2012-1-7 下午05:11:14
	 * @version V1.0   
	 */
	private static final long serialVersionUID = 3440317252067122452L;
	public static SoundCaptchaService service = CaptchaServiceSingleton.getSoundInstance();

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		this.doPost(request, response);
	}
	
	@Override
	protected void doPost(HttpServletRequest httpServletRequest,
			HttpServletResponse httpServletResponse) throws ServletException,
			IOException {
		// Set to expire far in the past.
		httpServletResponse.setDateHeader("Expires", 0);
		// Set standard HTTP/1.1 no-cache headers.
		httpServletResponse.setHeader("Cache-Control",
				"no-store, no-cache, must-revalidate");
		// Set IE extended HTTP/1.1 no-cache headers (use addHeader).
		httpServletResponse.addHeader("Cache-Control",
				"post-check=0, pre-check=0");
		// Set standard HTTP/1.0 no-cache header.
		httpServletResponse.setHeader("Pragma", "no-cache");

		// return a wav
		httpServletResponse.setContentType("audio/wav");

		AudioInputStream audioInputStream = 
			service.getSoundChallengeForID(httpServletRequest.
					getSession(true).getId());

		ServletOutputStream out = httpServletResponse.getOutputStream();

		// write the data out

		ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream();
		AudioSystem
				.write(audioInputStream,
						javax.sound.sampled.AudioFileFormat.Type.WAVE,
						byteOutputStream);

		out.write(byteOutputStream.toByteArray());
		try {
			out.flush();
		} finally {
			out.close();
		}
	}

	
	
	
	public  void validateResponse(HttpServletRequest request,
			String userCaptchaResponse) {
		// if no session found
		boolean validated = false;
		if (request.getSession(false) == null)
		// else use service and session id to validate
		try {
			validated = service.validateResponseForID(request.getSession()
					.getId(), userCaptchaResponse);
		} catch (CaptchaServiceException e) {
			// do nothing.. false
		}
		if(validated){
			//success
		}else{
			//error
		}
	}
}




分享到:
评论

相关推荐

    验证码 验证码例子 jcaptcha jcaptcha例子

    2. 声音验证码:除了图像验证码,jCaptcha还支持生成音频验证码,这对于视力障碍的用户来说非常友好。 3. 容错机制:jCaptcha允许用户在输入错误时有一定的重试次数,这样可以减少因误读导致的用户体验问题。 4. ...

    java验证码组件Jcaptcha

    同时,对于移动应用,Jcaptcha还提供了基于声音的验证码选项,以适应不同的用户需求。 总之,Java验证码组件Jcaptcha是一个强大且灵活的工具,为Java Web开发人员提供了生成安全验证码的解决方案,有助于防止恶意...

    jcaptcha-sample_验证码生成

    6. **自定义扩展**:除了基本功能,`jcaptcha-sample` 还展示了如何自定义验证码的样式、复杂度,甚至添加声音验证码以辅助视障用户。你可以通过继承和实现 `jCaptcha` 提供的接口来实现这些功能。 7. **测试与调试...

    Java验证码生成库 JCaptcha.7z

    4. **扩展性**:除了基本的图像验证码,JCaptcha还支持声音验证码和其他类型的挑战,满足不同场景的安全需求。 5. **多语言支持**:由于是Java库,它天然支持跨平台,可以在各种Java应用环境中使用。 **三、文件...

    浅析Java验证码生成库JCaptcha

    JCaptcha库不仅支持生成图像验证码,还支持生成声音验证码,提供了一种多模态的验证方式。 要使用JCaptcha,首先需要在项目中引入相应的依赖。如果你使用Maven构建系统,可以在`pom.xml`文件中添加以下依赖: ```...

    验证码生成类大全

    - 声音验证码:为视障用户提供,读出一串随机数字或字母。 2. **验证码生成原理**: - 随机性:验证码的每个组成部分(颜色、字体、位置、大小等)都应随机生成,确保每次生成的验证码不重复。 - 安全性:防止被...

    语音验证码

    "Jcaptcha" 是 Java 的验证码库,它支持创建各种复杂的图形验证码,同时根据描述,Jcaptcha 还可能集成了语音验证码功能。在设置过程中,`mbrola.base` 是一个关键的配置项,这通常是指向 MBROLA 语音合成引擎的路径...

    jcaptcha组件jar包

    JCaptcha jca ptcha是一个开源的用来...jcapthca是非常强大的,不光是可以生成图片式的验证码,还可以生成声音式的(新浪就使用了双重验证码)。 Jcaptcha是CAPTCHA里面的一个比较著名的项目。 这里为使用它所需的jar包

    jsp 验证码

    - 声音验证码:对于视觉障碍的用户友好,通过播放一段语音让用户识别。 - 行动验证码:如滑动验证码或点击顺序验证码,需要用户执行特定操作。 2. **JSP验证码实现原理**: - 服务器生成随机字符串,通常包含...

    Java中验证码的生成

    - 考虑无障碍性:为视觉障碍用户提供声音验证码或其它替代方案。 在实际开发中,还可以使用现成的验证码库,如`JCaptcha`或`Google's reCAPTCHA`,它们提供了许多预设的选项和优化,可以帮助开发者快速实现验证码...

    java 验证码的实现

    需要注意的是,这只是一个基础实现,实际应用中可能需要考虑更多安全因素,例如增加更多的字符集、使用更复杂的干扰线、考虑可访问性(如为视觉障碍者提供声音验证码)等。此外,随着技术的发展,现在有许多现成的库...

    java+web网页验证码功能

    - 声音验证码:适用于视觉障碍的用户,通过播放一段随机生成的数字或字母序列来验证身份。 - 手势验证码:用户需要按照指定的路径在画布上滑动,通常用于移动应用。 2. **生成验证码**: - 在Java中,可以使用`...

    探讨Java验证码制作(下篇)

    JCaptcha是Java版本的验证码项目,它提供了一种方式来生成人类可以轻易识别但计算机难以破解的图像或声音验证码。CAPTCHA(Completely Automated Public Turing Test to Tell Computers and Humans Apart)的概念由...

    JAVA上百实例源码以及开源项目源代码

    简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对IT的憧憬、向往!...

Global site tag (gtag.js) - Google Analytics