В этой статье используется пример кода, сгенерированный кодом проверки Java для вашей ссылки. Конкретный контент заключается в следующем
пакет com.gonvan.component.captcha; Импорт java.awt.*; import java.awt.image.bufferedimage; импорт java.io.ioexception; import java.util.hashmap; импорт java.util.map; импорт java.util.random; Импорт javax.imageio.imageio; import javax.servlet.servletoutputstream; импорт javax.servlet.http.httpservletrequest; импорт javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsessession; /*** Создан Юерзмом 2016/3/14. */public class captchafactory {private static final char [] code_sequence = "abcdefghijklmnopqrStuvwxyz0123456789" .tchararray (); Private Static Final int default_width = 60; Private Static Final int default_height = 20; Private Static Final int default_code_len = 4; Private Static Final int default_code_x = 13; Private Static Final int default_code_y = 16; Private Static Final int default_font_size = 18; частная статическая конечная строка default_font_family = "times new Roman"; Частный статический экземпляр капхафакториев = new captchafactory (); private int width = default_width; // Определить ширину частной int height = default_height; // определить высоту private int length = default_code_len; // Определите количество кодов проверки, отображаемых на картинке Private int XX = default_code_x; // Определить код проверки x Координата частного int yy = default_code_y; // Определите координаты проверки y, отображаемые на рисунке private int fontsize = default_font_size; // Определите размер шрифта кода проверки, отображаемого на изображении Private String fontfamily = default_font_family; // Определите количество кода проверки, отображаемого на изображении private captchafactory () {} public static captchafactory getInstance () {return Encement; } / ** * Настройка ширина и высота * * @param w * @param h * @return * / public captchafactory configwidthandheight (int w, int h) {exaction.width = w; exants.height = h; вернуть экземпляр; } / ** * Конфигурировать координаты * * @param x * @param y * @return * / public captchafactory configxy (int x, int y) {exance.xx = x; ancess.yy = y; вернуть экземпляр; } / ** * Настроить размер шрифта * * @param fontsize * @return * / public captchafactory configfontsize (int fontsize) {ancess.fontsize = fontsize; вернуть экземпляр; } / ** * Configure font * * @param fontfamily * @return * / public captchafactory configfontsize (String fontfamily) {exance.fontfamily = fontfamily; вернуть экземпляр; } public void write (httpservlectrequest, httpservletresponse response) бросает ioexception {// Сохранить четырехзначный код проверки в сеанс. Карта captcha = Generate (); String randomCode = (string) captcha.get ("captChacode"); BufferedImage buffimg = (BuffereMage) captcha.get ("captChaimg"); Httpsession session = request.getsession (); session.setattribute ("code", randomcode); // кэширование изображения запрещено. response.setheader ("pragma", "без Cache"); response.setheader («Контроль кэша», «без каша»); response.setDateHeader («истекает», 0); response.setContentType ("Image/jpeg"); // Вывод изображения в выходной поток сервлета. ServletOutputStream outputStream = response.getOutputStream (); Imageio.write (buffimg, "jpeg", outputStream); outputStream.close (); } public Map <string, Object> Generate () Throws ioException {// определить буферизатор Image BufferedImage buffimg = new BufferedImage (ширина, высота, bufferedimage.type_int_rgb); Graphics gd = buffimg.getGraphics (); // Установить цвет фона gd.setcolor (getrandcolor (200, 250)); Gd.FillRect (0, 0, ширина, высота); // Установить шрифт, размер шрифта должен быть определен в соответствии с высотой картинки. gd.setfont (новый шрифт (fontfamily, font.plain, fontsize)); // Создать случайное генератор числа класс случайный случайный = new random (); // случайный генерирует 40 интерференционных линий, делая код аутентификации в изображении менее вероятной, чтобы обнаружить другими программами. Gd.setcolor (getrandcolor (160, 200)); for (int i = 0; i <155; i ++) {int x = random.nextint (ширина); int y = random.nextint (высота); int xl = random.nextint (12); int yl = random.nextint (12); gd.drawline (x, y, x + xl, y + yl); } // RandomCode используется для сохранения случайно сгенерированных кодов проверки, чтобы пользователи могли проверить после входа. int red = 0, green = 0, blue = 0; // Случайно генерируют коды проверки длины. для (int i = 0; i <length; i ++) {// Получить случайно сгенерированный номер кода проверки. String Code = String.valueof (code_sequence [random.nextint (36)]); // Сгенерировать случайные цветовые компоненты для построения значения цвета, так что значение цвета каждого цифрового выхода будет различным. red = random.nextint (110); green = random.nextint (110); blue = random.nextint (110); // Нарисуйте код проверки в изображение с помощью случайно сгенерированного цвета. Gd.setcolor (новый цвет (красный + 20, зеленый + 20, синий + 20)); gd.drawstring (код, i * xx + 6, yy); // объединить сгенерированные случайные числа вместе. randomcode.append (code); } Map <string, object> retval = new hashmap <> (); retval.put ("captChacode", randomCode.toString ()); retval.put ("captChaimg", buffimg); возврат возврата; } / ** * Получить случайный цвет, данный диапазон * * @param fc * min * @param bc * maximum * @return color * / private color getrandcolor (int fc, int bc) {randmand random = new random (); if (fc> 255) fc = 255; if (bc> 255) bc = 255; int r = fc + random.nextint (bc - fc); int g = fc + random.nextint (bc - fc); int b = fc + random.nextint (bc - fc); вернуть новый цвет (r, g, b); }}Выше приведено в этой статье, я надеюсь, что это будет полезно для каждого обучения.