BotDetect Spring 5 CAPTCHA Integration Quickstart

Unlike Recaptcha the Stalker -- BotDetect CAPTCHA works in China! Licensable source-code; self-hosted -- doesn't stalk -- nor does it slurp your form-data! Think: GDPR & LGPD!

1. Add BotDetect Java CAPTCHA Library Dependency

To manually add BotDetect Captcha library to classpath, copy the following three jar files from BotDetect Java download package to application's WEB-INF/lib folder:

  • botdetect-4.0.beta3.5.jar
  • botdetect-servlet-4.0.beta3.5.jar
  • botdetect-jsp20-4.0.beta3.5.jar

To share BotDetect Captcha among multiple applications, these BotDetect jar files above should be copied into 'lib' directory of web container or application server's domain.

2. Show a CAPTCHA Challenge on the Form

On the very top of the source file for the web form you want to protect against bots, put BotDetect taglib declaration:

<%@taglib prefix="botDetect" uri="https://captcha.com/java/jsp"%>

To render Captcha in the form, add the following within <form> you want to protect against bots:

<!-- Adding BotDetect Captcha to the page -->
<botDetect:captcha id="exampleCaptcha" userInputID="captchaCode"/>

<input type="text" name="captchaCode" id="captchaCode"/>
<input type="submit" name="submit" label="Submit" id="submit"/>

3. Check User Input During Form Submission

When the form is submitted, the Captcha validation result must be checked in Spring Controller:

[...]
import com.captcha.botdetect.web.servlet.Captcha;

@Controller
public class ExampleController {
    
    [...]
    
    @RequestMapping(value = "/validate", method = RequestMethod.POST)
    public ModelAndView onSubmit(HttpServletRequest request, 
                        @Valid @ModelAttribute("example")BasicExample basicExample) 
    {
        // validate the Captcha to check we're not dealing with a bot
        Captcha captcha = Captcha.load(request, "exampleCaptcha");
        boolean isHuman = captcha.validate(basicExample.getCaptchaCode());
        
        if (isHuman) {
          basicExample.setCaptchaCorrect("Correct code");
          basicExample.setCaptchaIncorrect("");
        } else {
          basicExample.setCaptchaCorrect("");
          basicExample.setCaptchaIncorrect("Incorrect code");
        }

        basicExample.setCaptchaCode("");
        
        return new ModelAndView("example", "basicExample", basicExample);
    }
        
}

4. Configure your Application

Update your application configuration (web.xml) file.

<servlet>
  <servlet-name>BotDetect Captcha</servlet-name>
  <servlet-class>com.captcha.botdetect.web.servlet.CaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>BotDetect Captcha</servlet-name>
  <url-pattern>/botdetectcaptcha</url-pattern>
</servlet-mapping>

In-Depth Spring MVC 5 CAPTCHA Instructions and Explanations

Detailed Spring MVC 5 Captcha instructions and explanations can be found in the Spring MVC 5 Captcha integration how to guide.


Please Note

BotDetect Java Captcha Library v4.0.Beta3.5 is an in-progress port of BotDetect 4 Captcha, and we need you to guide our efforts towards a polished product. Please let us know if you encounter any bugs, implementation issues, or a usage scenario you would like to discuss.