我想在page.Whenever上添加动态验证码超过3个请求来自同一IP地址的特定时间,然后验证码将出现在屏幕上。
发布于 2013-04-28 23:02:51
servlet
发布于 2013-04-28 23:07:54
我希望这能帮到你。
发布于 2016-12-23 14:10:19
CAPTCHA (完全自动化的公共图灵测试,以区分计算机和人类)是一种确定用户是否是人类的测试。
CAPTCHA提供了一种阻止机器人与你的站点交互的方法,它提供了一些让它们很难阅读,但对人们来说很容易阅读的东西。
import java.util.Random;
public class GenerateCaptcha {
/**
* Generate Length between 5 and 8.
* @return return length.
*/
private static int generateRandomLength() {
int length = 5 + Math.abs((random.nextInt()%4));
return length;
}
/**
* Generate a CAPTCHA String consisting of random
* lower case & upper case letters, and numbers.
*/
private static String generateCaptchaString(int length) {
StringBuffer captchaBuffer = new StringBuffer();
for (int i = 0; i < length; i++) {
/** Generate the Random Character between 0 to 61.
* NOTE: Take abs value, because there may
* be ArrayIndexOutOfBount
* Exception for negative number*/
int rndCharIdx = Math.abs(random.nextInt()) % 62;
char character = characters[rndCharIdx];
captchaBuffer.append(character);
}
return captchaBuffer.toString();
}
private static Character[] characters = {'a','b','c','d','e','f',
'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u',
'v','w','x','y','z','A','B','C','D','E','F','G','H','I','J',
'K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y',
'Z','0','1','2','3','4','5','6','7','8','9'};
private static Random random = new Random();
public static void main(String[] args) {
int rndmCaptchaLen = generateRandomLength();
String captcha = generateCaptchaString(rndmCaptchaLen);
System.out.println("Random Captcha #"+captcha);
}
}在我的博客上有更多信息:
http://javaexplorer03.blogspot.in/2016/12/program-to-generate-unique-captcha-to.html
https://stackoverflow.com/questions/16264165
复制相似问题