java 生成验证码图片

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;
  }

}



<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>

猜你喜欢

转载自blog.csdn.net/xiaogg3678/article/details/77992234