معلومات المنتج:
package com.g.core.common.JCaptcha;
import java.awt.Color;
import java.awt.Font;
import com.octo.captcha.component.image.backgroundgenerator.BackgroundGenerator;
import com.octo.captcha.component.image.backgroundgenerator.FileReaderRandomBackgroundGenerator;
import com.octo.captcha.component.image.color.RandomListColorGenerator;
import com.octo.captcha.component.image.fontgenerator.FontGenerator;
import com.octo.captcha.component.image.fontgenerator.RandomFontGenerator;
import com.octo.captcha.component.image.textpaster.DecoratedRandomTextPaster;
import com.octo.captcha.component.image.textpaster.TextPaster;
import com.octo.captcha.component.image.textpaster.textdecorator.TextDecorator;
import com.octo.captcha.component.image.wordtoimage.ComposeWordToImage;
import com.octo.captcha.component.image.wordtoimage.WordToImage;
import com.octo.captcha.component.word.wordgenerator.RandomWordGenerator;
import com.octo.captcha.component.word.wordgenerator.WordGenerator;
import com.octo.captcha.engine.image.ListImageCaptchaEngine;
import com.octo.captcha.image.gimpy.GimpyFactory;
/**
* 生成验证码图الصورة
*/
الطبقة العامة JCaptchaEngine تمتد ListImageCaptchaEngine {
السلسلة النهائية العامة الثابتة IMAGE_CAPTCHA_KEY = "imageCaptcha"؛// ImageCaptcha، حدد مفتاح الجلسة
السلسلة النهائية العامة الثابتة CAPTCHA_INPUT_NAME = "j_captcha";// 验证码输入表单名称
السلسلة النهائية العامة الثابتة CAPTCHA_IMAGE_URL = "/captcha.jpg";// عنوان URL
عدد صحيح نهائي ثابت خاص MIN_WORD_LENGTH = 4;// 验证码最小长度
عدد صحيح نهائي ثابت خاص MAX_WORD_LENGTH = 4;// 验证码最大长度
عدد صحيح نهائي ثابت خاص IMAGE_HEIGHT = 28;// 码图片高度
عدد صحيح نهائي ثابت خاص IMAGE_WIDTH = 80;// 码图片宽度
عدد صحيح نهائي ثابت خاص MIN_FONT_SIZE = 16;// 验证码最小字体
عدد صحيح نهائي ثابت خاص MAX_FONT_SIZE = 16;// 验证码最大字体
السلسلة النهائية الثابتة الخاصة RANDOM_WORD = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
سلسلة نهائية ثابتة خاصة IMAGE_PATH = "./captcha/"؛// قم بالتسجيل
// 验证码随机字体
الخط النهائي الثابت الخاص[] RANDOM_FONT = الخط الجديد[] {
خط جديد ("نيالا"، Font.BOLD، MIN_FONT_SIZE)،
خط جديد ("Arial"، Font.BOLD، MIN_FONT_SIZE)،
الخط الجديد ("Bell MT"، Font.BOLD، MIN_FONT_SIZE)،
خط جديد ("وادي الائتمان"، Font.BOLD، MIN_FONT_SIZE)،
خط جديد("Impact"، Font.BOLD، MIN_FONT_SIZE)
};
// 验证码随颜色
اللون النهائي الثابت الخاص[] RANDOM_COLOR = اللون الجديد[] {
اللون الجديد (255، 255، 255)،
اللون الجديد (255، 220، 220)،
اللون الجديد (220، 255، 255)،
اللون الجديد (220، 220، 255)،
اللون الجديد (255، 255، 220)،
اللون الجديد (220، 255، 220)
};
// 生成验证码
@تجاوز
بناء الفراغ المحمي () {
RandomListColorGenerator RandomListColorGenerator = new RandomListColorGenerator(RANDOM_COLOR);
خلفيةGenerator الخلفيةGenerator = new FileReaderRandomBackgroundGenerator(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_PATH);
WordGenerator wordGenerator = new RandomWordGenerator(RANDOM_WORD);
FontGenerator FontGenerator = new RandomFontGenerator(MIN_FONT_SIZE, MAX_FONT_SIZE, RANDOM_FONT);
TextDecorator[] textDecorator = new TextDecorator[] {};
TextPaster textPaster = new DecoratedRandomTextPaster(MIN_WORD_LENGTH, MAX_WORD_LENGTH, RandomListColorGenerator, textDecorator);
WordToImage wordToImage = new ComisedWordToImage(fontGenerator,backgroundGenerator,textPaster);
addFactory(new GimpyFactory(wordGenerator, wordToImage));
}
}
معلومات المنتج:
package com.g.core.common.JCaptcha;
import com.octo.captcha.service.captchastore.FastHashMapCaptchaStore;
import com.octo.captcha.service.image.DefaultManageableImageCaptchaService;
import com.octo.captcha.service.image.ImageCaptchaService;
الطبقة العامة CaptchaServiceSingleton {
مثيل ImageCaptchaService الثابت الخاص =null;
عامة CaptchaServiceSingleton () {
}
// مزامنة البيانات المتزامنة
ImageCaptchaService العامة المتزامنة getInstance() {
إذا (مثيل == فارغ) {
مثيل = جديد DefaultManageableImageCaptchaService(new FastHashMapCaptchaStore(), new JCaptchaEngine(), 180,
100000، 75000)؛
}
مثيل الإرجاع؛
}
}
معلومات المنتج:
package com.g.core.render;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import com.g.core.common.JCaptcha.CaptchaServiceSingleton;
import com.jfinal.kit.StringKit;
import com.jfinal.render.Render;
الطبقة العامة JCaptchaRender تمتد Render {
سلسلة خاصة RandomCodeKey؛
JCaptchaRender العامة (سلسلة RandomCodeKey) {
إذا (StringKit.isBlank(randomCodeKey))
throw new IllegalArgumentException("لا يمكن ترك مفتاح RandomCodeKey فارغًا");
this.randomCodeKey = RandomCodeKey;
}
@تجاوز
تقديم الفراغ العام () {
Response.setHeader("التحكم في ذاكرة التخزين المؤقت"، "no-store");
Response.setHeader("Pragma"، "no-cache");
Response.setDateHeader("انتهاء الصلاحية"، 0);
Response.setContentType("image/jpeg");
ServletOutputStream sos = null;
يحاول {
sos = Response.getOutputStream();
//String captchaId = request.getSession(true).getId();
BufferedImage Challenge = (BufferedImage) CaptchaServiceSingleton.getInstance().getChallengeForID(randomCodeKey, request.getLocale());
ImageIO.write(challenge, "jpg", sos);
sos.flush();
} قبض (الاستثناء ه) {
رمي RuntimeException (e) الجديد ؛
}
أخيراً {
إذا (سوس! = فارغة)
حاول {sos. Close ()؛} قبض على (IOException e) {e.printStackTrace ()؛}
}
}
}
معلومات المنتج:
الفراغ العام Random_code () {
render(new JCaptchaRender(getSession().getId()));
}