package com.octo.captcha.module.servlet.image;
import java.awt.image.BufferedImage;
import java.io.IOException;
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 com.octo.captcha.engine.image.gimpy.GmailEngine;
import com.octo.captcha.engine.image.gimpy.SoftMrEngine;
import com.octo.captcha.service.CaptchaServiceException;
import com.octo.captcha.service.captchastore.FastHashMapCaptchaStore;
import com.octo.captcha.service.image.DefaultManageableImageCaptchaService;
import com.octo.captcha.service.image.ImageCaptchaService;
public class ImageCatpchaServlet extends HttpServlet
implements Servlet
{
public static ImageCaptchaService service =
new DefaultManageableImageCaptchaService(new FastHashMapCaptchaStore(), new SoftMrEngine() , 180, 100000, 75000);
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
throws ServletException, IOException
{
httpServletResponse.setDateHeader("Expires", 0L);
httpServletResponse.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
httpServletResponse.addHeader("Cache-Control", "post-check=0, pre-check=0");
httpServletResponse.setHeader("Pragma", "no-cache");
httpServletResponse.setContentType("image/jpeg");
BufferedImage bi = service.getImageChallengeForID(httpServletRequest.getSession(true).getId());
ServletOutputStream out = httpServletResponse.getOutputStream();
ImageIO.write(bi, "jpg", out);
try
{
out.flush();
}
finally
{
out.close();
}
}
public static boolean validateResponse(HttpServletRequest request, String userCaptchaResponse)
{
if (request.getSession(false) == null) return false;
boolean validated = false;
try {
validated = service.validateResponseForID(request.getSession().getId(), userCaptchaResponse).booleanValue();
} catch (CaptchaServiceException e) {
e.printStackTrace();
}
return validated;
}
import java.awt.image.BufferedImage;
import java.io.IOException;
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 com.octo.captcha.engine.image.gimpy.GmailEngine;
import com.octo.captcha.engine.image.gimpy.SoftMrEngine;
import com.octo.captcha.service.CaptchaServiceException;
import com.octo.captcha.service.captchastore.FastHashMapCaptchaStore;
import com.octo.captcha.service.image.DefaultManageableImageCaptchaService;
import com.octo.captcha.service.image.ImageCaptchaService;
public class ImageCatpchaServlet extends HttpServlet
implements Servlet
{
public static ImageCaptchaService service =
new DefaultManageableImageCaptchaService(new FastHashMapCaptchaStore(), new SoftMrEngine() , 180, 100000, 75000);
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
throws ServletException, IOException
{
httpServletResponse.setDateHeader("Expires", 0L);
httpServletResponse.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
httpServletResponse.addHeader("Cache-Control", "post-check=0, pre-check=0");
httpServletResponse.setHeader("Pragma", "no-cache");
httpServletResponse.setContentType("image/jpeg");
BufferedImage bi = service.getImageChallengeForID(httpServletRequest.getSession(true).getId());
ServletOutputStream out = httpServletResponse.getOutputStream();
ImageIO.write(bi, "jpg", out);
try
{
out.flush();
}
finally
{
out.close();
}
}
public static boolean validateResponse(HttpServletRequest request, String userCaptchaResponse)
{
if (request.getSession(false) == null) return false;
boolean validated = false;
try {
validated = service.validateResponseForID(request.getSession().getId(), userCaptchaResponse).booleanValue();
} catch (CaptchaServiceException e) {
e.printStackTrace();
}
return validated;
}
}
<servlet>
<servlet-name>jcaptcha</servlet-name>
<servlet-class>com.octo.captcha.module.servlet.image.ImageCatpchaServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>jcaptcha</servlet-name>
<url-pattern>/jcaptcha.jpg</url-pattern>
</servlet-mapping>
$("#checkCode").attr("src",url+"/jcaptcha.jpg?t="+new Date().getTime())
<span>验证码:</span> <input type="text" id="inputCode" style="width:80px">
<img id="checkCode" style="width: 145px;height: 40px;vertical-align: bottom;"></img>