В этом примере используется конкретный код Java, сгенерированного сгенерированного кода проверки для вашей ссылки. Конкретный контент заключается в следующем
Импорт java.awt.color; import java.awt.font; import java.awt.graphics2d; импорт java.awt.image.bufferedimage; импорт java.io.ioexception; импорт java.util.random; import javax.imageio.imageio; import javax.servlet.sersceptexception; javax.servlet.servletoutputstream; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpsersersponse; import javax.servlet.httpsession; {/ *** Конструктор объекта.*/ Public randimage () {super (); } private int imgwidth = 0; // Ширина изображения частная int imgheight = 0; // высота изображения private int CodeCount = 0; // количество символов в картинке Private int x = 0; частный int fontheight; // высота шрифта частной инт -коди; частная строка Fontstyle; // Стиль шрифта // идентификатор сериализации избегайте дубликатов частного статического окончательного длинного длинного сериала = 128554012633034503L; /*** Параметры конфигурации инициализации*/public void init () бросает ServletException {// string strwidth = "200"; // высота строка strheight = "80"; // количество символов String strcodecount = "5"; // font fontstyle = "times new Roman"; // конвертировать настроенную информацию в численную try {if (strwidth! = Null && strwidth.length ()! = 0) {imgwidth = integer.parseint (strwidth); } if (strheight! = null && strheight.length ()! = 0) {imgheight = integer.parseint (strheight); } if (strcodecount! = null && strcodecount.length ()! = 0) {codecount = integer.parseint (strcodecount); }} catch (numberFormateXception e) {e.printStackTrace (); } x = imgwidth / (CodeCount + 1); // расстояние между персонажами fontheight = imgheight - 2; // высота шрифта Codey = imgheight - 12; // высота кода} Protected void ProcessRequest (httpservletRequest, httpservletresponse response) throws servletexception, ioexception {// output -потоковой набор response.setContentType ("Image/jpeg"); // output format response.setheader ("pragma", "no-cache"); // Нет Cache Regenerate Recason.setheader ("Cache-Control", "No-Cache"); // Нет Cache Regenerate response.setDateHeader («истекает», 0); // НЕТ КАЧЕСТВО НЕ ПРЕДОСТАВЛЯЕТСЯ НЕ КАШЕГОВАЯ СЕССИЯ HTTPSESSION = request.getSession (); // Получить сеанс сеанса // Создать изображение в памяти BufferedImage Image = new BufferedImage (imgwidth, imgheight, bufferedimage.type_int_rgb); // Получить графический контекст graphics2d g = image.creategraphics (); // генерировать случайный случайный случайный = new Random (); // случайный класс // Установить цвет фона прямоугольника g.setcolor (color.white); // заполнить прямоугольник прямо в белый g.fillrect (0, 0, imgwidth, imgheight); // Установить пограничный шрифт g.setfont (новый шрифт (fontstyle, font.plain + font.italic, fontheight)); // установить цвет границы G.SetColor (новый цвет (55, 55, 12)); // Нарисуйте границу G.DrawRect (0, 0, imgWidth - 1, imgheight - 1); // Случайно генерирует 160 интерференционных линий, что делает код аутентификации в изображении, нелегко обнаружить другими программами G.SetColor (getRandcolor (160, 200)); for (int i = 0; i <160; i ++) {int x = random.nextint (imgwidth); int y = random.nextint (imgheight); int xl = random.nextint (12); int yl = random.nextint (12); g.drawline (x, y, x + xl, y + yl); } // Принять случайно сгенерированный код аутентификации (4-значный номер) string srand = ""; int red = 0, green = 0, blue = 0; for (int i = 0; i <codeCount; i ++) {// изменение, чтобы генерировать случайные символы CodeCount // Истории нового цвета через RGB Three Colors Red = random.nextint (255); green = random.nextint (255); blue = random.nextint (255); // истории, чтобы получить несколько из 0 1 2 int wordtype = random.nextint (3); // истории, чтобы получить 3 числа между 0-2 char retword = 0; // 0 Номер 1 строчная буква 2 Стоимость переключателя буквы (WordType) {case 0: retword = this.getSingLemberChar (); // Получить перерыв типа Char-Type 0-9; Случай 1: retword = this.getLowerOrupperChar (0); // Получить перерыв в нижнем типе; Случай 2: retword = this.getLowerOrupperChar (1); // Получите перерыв в верхнем типе; } srand += string.valueof (retword); // Получить полученные случайные символы g.setcolor (новый цвет (красный, зеленый, синий)); // Установить цвет g.drawstring (string.valueof (retword), 2+ (i) * x, codey); // Написать символы в соответствующую позицию в картинке} // Сохранить код аутентификации в сеансе сеанса.setattribute ("RAND", Srand); // Сохранить полученные случайные символы в ответе сеанса, и вы можете позвонить // изображение вступает в силу g.dispose (); // Выпустить g Object ServletOutputStream responseOutputStream = response.getOutputStream (); // Вывод потока // Выходное изображение на страницу ImageIo.Write (image, "jpeg", responseOutputStream); // Вывод в формате JPEG // Закройте поток ввода ниже! responseoutputStream.flush (); // Свежий и закрыть потоковой responseputstream.close (); } Color getrandColor (int fc, int bc) {// Дайте случайный цвет 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); } Защищенный void Doget (httpservletRequest, httpservletresponse response) Throws ServletException, ioException {processRequest (запрос, ответ); } Защищенный void Dopost (httpservletrequest, httpservletresponse response) throws servletexception, ioException {processRequest (запрос, ответ); } // Конвертировать целочисленное случайное число в char в возвращение частного char getinglenumberchar () {случайный случайный = new random (); int numberresult = random.nextint (10); int ret = numberResult + 48; // При преобразовании символов '0' в код Ascall это 48 return (char) ret; } // Получить 26 символов private char getLowerUpperchar (int over) {случайный случайный = new random (); int numberresult = random.nextint (26); int ret = 0; if (opper == 0) {// нижний регистр ret = numberresult + 97; } else if (opper == 1) {// capital ret = numberresult + 65; } return (char) ret; }} Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.