您的位置:首页 > 编程语言 > Java开发

java 生成验证码图片

2017-09-15 15:31 453 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息