jcaptcha 之 声音验证码

[color=red]freetts .jar 没有的话 下面有附件下载[/color]


/*
* 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
}
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值