美文网首页
Java验证码

Java验证码

作者: bore1994 | 来源:发表于2016-09-20 18:37 被阅读0次

    Servlet代码    (JcaptchaServlet.java)

    /**

    * 提供验证码图片的Servlet

    */

    @SuppressWarnings("serial")

    public class JcaptchaServlet extends HttpServlet {

    public static final String CAPTCHA_IMAGE_FORMAT = "jpeg";

    private ImageCaptchaService captchaService;

    private SessionProvider session;

    @Override

    public void init() throws ServletException {

    WebApplicationContext appCtx = WebApplicationContextUtils

    .getWebApplicationContext(getServletContext());

    captchaService = (ImageCaptchaService) BeanFactoryUtils

    .beanOfTypeIncludingAncestors(appCtx, ImageCaptchaService.class);

    session = (SessionProvider) BeanFactoryUtils

    .beanOfTypeIncludingAncestors(appCtx, SessionProvider.class);

    }

    @Override

    protected void doGet(HttpServletRequest request,

    HttpServletResponse response) throws ServletException, IOException {

    byte[] captchaChallengeAsJpeg = null;

    // the output stream to render the captcha image as jpeg into

    ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();

    try {

    // get the session id that will identify the generated captcha.

    // the same id must be used to validate the response, the session id

    // is a good candidate!

    String captchaId = session.getSessionId(request);

    BufferedImage challenge = captchaService.getImageChallengeForID(

    captchaId, request.getLocale());

    // Jimi.putImage("image/jpeg", challenge, jpegOutputStream);

    ImageIO.write(challenge, CAPTCHA_IMAGE_FORMAT, jpegOutputStream);

    } catch (IllegalArgumentException e) {

    response.sendError(HttpServletResponse.SC_NOT_FOUND);

    return;

    } catch (CaptchaServiceException e) {

    response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

    return;

    }

    // catch (JimiException e) {

    // response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);

    // return;

    // }

    captchaChallengeAsJpeg = jpegOutputStream.toByteArray();

    // flush it in the response

    response.setHeader("Cache-Control", "no-store");

    response.setHeader("Pragma", "no-cache");

    response.setDateHeader("Expires", 0);

    response.setContentType("image/" + CAPTCHA_IMAGE_FORMAT);

    ServletOutputStream responseOutputStream = response.getOutputStream();

    responseOutputStream.write(captchaChallengeAsJpeg);

    responseOutputStream.flush();

    responseOutputStream.close();

    }

    }

    因为xml文件无法导入所以只能贴图了

    相关文章

      网友评论

          本文标题:Java验证码

          本文链接:https://www.haomeiwen.com/subject/xwuoettx.html