/* * 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 com.octo.captcha.module.servlet.image; import com.octo.captcha.service.image.DefaultManageableImageCaptchaService; import com.octo.captcha.service.image.ImageCaptchaService; import com.octo.captcha.service.CaptchaServiceException; import javax.imageio.ImageIO; 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 java.awt.image.BufferedImage; import java.io.IOException; /** * @author mag * @Date 14 f�vr. 2009 */ public class SimpleImageCaptchaServlet extends HttpServlet implements Servlet { public static ImageCaptchaService service= new DefaultManageableImageCaptchaService(); @Override protected void doGet(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 jpeg httpServletResponse.setContentType("image/jpeg"); // create the image with the text BufferedImage bi = service.getImageChallengeForID(httpServletRequest.getSession(true).getId()); ServletOutputStream out = httpServletResponse.getOutputStream(); // write the data out ImageIO.write(bi, "jpg", out); try { out.flush(); } finally { out.close(); } } public static boolean validateResponse(HttpServletRequest request, String userCaptchaResponse){ //if no session found if(request.getSession(false)==null)return false; //else use service and session id to validate boolean validated = false; try { validated = service.validateResponseForID(request.getSession().getId(),userCaptchaResponse); } catch (CaptchaServiceException e) { //do nothing.. false } return validated; } }