@RequestMapping("/captcha")
  public ModelAndView handleRequest(
      HttpServletResponse response, HttpSession session, OutputStream outputStream)
      throws Exception {
    // Set to expire far in the past.
    response.setDateHeader("Expires", 0);
    // Set standard HTTP/1.1 no-cache headers.
    response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
    response.addHeader("Cache-Control", "post-check=0, pre-check=0");
    // Set standard HTTP/1.0 no-cache header.
    response.setHeader("Pragma", "no-cache");

    // return a jpeg
    response.setContentType("image/jpeg");

    // create the text for the image
    String capText = captchaProducer.createText();

    // store the text in the session
    session.setAttribute(EyougoConstant.KAPTCHA_SESSION_KEY, capText);

    // create the image with the text
    BufferedImage bi = captchaProducer.createImage(capText);

    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    ImageIO.write(bi, "jpg", baos);
    byte[] jpegData = baos.toByteArray();
    response.setHeader("Content-Length", String.valueOf(jpegData.length));

    // write the data out
    ImageIO.write(bi, "jpg", outputStream);
    try {
      outputStream.flush();
    } finally {
      outputStream.close();
    }
    return null;
  }
Beispiel #2
0
  @RequestMapping(value = "captcha-image")
  public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response)
      throws Exception {
    HttpSession session = request.getSession();
    response.setDateHeader("Expires", 0);
    response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
    response.addHeader("Cache-Control", "post-check=0, pre-check=0");
    response.setHeader("Pragma", "no-cache");
    response.setContentType("image/jpeg");

    String capText = captchaProducer.createText();
    session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);

    BufferedImage bi = captchaProducer.createImage(capText);
    ServletOutputStream out = response.getOutputStream();
    ImageIO.write(bi, "jpg", out);
    try {
      out.flush();
    } finally {
      out.close();
    }
    return null;
  }