Все знают код проверки, и мне не нужно больше говорить о его функции. Если вы не очень ясны, пожалуйста, обратитесь к объяснению в энциклопедии Baidu. Как правило, генерация кодов проверки состоит в том, чтобы случайным образом генерировать символы (цифры, буквы или китайские символы и т. Д.), Затем введите эти сгенерированные символы в картинку, а затем добавляют некоторые мешающие элементы в картинку, такие как различные строки и т. Д.
Простая страница входа в систему (код не завершен, только часть кода проверки)
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <tite> html </title> <scriptal type = "exatas/javascict"> <space/"javascij data-filtered = "Filmed"> </span> <span style = "Белое пространство: pre"> </span> // js функция, чтобы обновить код проверки <span style = "Белое пространство: pre"> </span> function changecode () {<span style = "Белое пространство: pre"> </span> var imgnode = document.getelementbyid ("vimg"); <span style = "Белое пространство: pre"> </span> // перезагрузить код проверки, чтобы достичь цели обновления <span style = "белое пространство: pre"> </span> imgnode.src = "Сервлет/Authimageservlet? t =" + math.random (); // Предотвращение проблем с кешем браузера <span style = "Белое пространство: pre"> </span>} </script> </head> <body> <form action = "ceckservlet" method = "post"> <babel> код проверки ввода </label> <br/> <input type = "text" name = "randomcode"/> <img = "vimg" onclick = "name =" randomcode "/> <img =" src = "Servlet/Authimageservlet"> <br/> <input type = "Отправить" value = "prope"> </form> </body> </html>Через session.getAttribute («rand») получается сгенерированный код проверки, а затем сравнивается с пользовательским вводом, а затем соответствующая обработка выполняется на основе результатов сравнения.
Генерировать код проверки через сервлет:
пакет com.util.servlet; импортировать java.awt.color; импортировать java.awt.font; импортировать java.awt.graphics; Импорт java.awt.image.bufferedImage; импортировать java.io.ioexception; импортировать java.util.random; Импорт javax.imageio.imageio; Импорт javax.servlet.servletexception; Импорт javax.servlet.http.httpservlet; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Импорт javax.servlet.http.httpsession; открытый класс Authimageservlet Extends httpservlet {private Static final String content_type = "text/html; charset = gb2312"; // Установить размер писем, частный шрифт mfont = new Font («Times New Roman», Font.Plain, 17); public void init () бросает ServletException {super.init (); } Color getrandColor (int fc, int bc) {random 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); int b = fc+random.nextint (bc-fc); вернуть новый цвет (r, g, b); } public void service (httpservletrequest, httpservletresponse response), бросает ServletException, ioException {response.setheader ("pragma", "без Cache"); response.setheader («Контроль кэша», «без каша»); response.setDateHeader («истекает», 0); // Укажите, что сгенерированным ответом является реакция изображения.setContentType ("Image/jpeg"); int ширина = 100, высота = 18; BufferedImage Image = new BufferedImage (ширина, высота, bufferedimage.type_int_rgb); Graphics g = image.getGraphics (); Случайный случайный = new Random (); g.setcolor (getrandcolor (200 250)); G.FillRect (1, 1, ширина-1, высота-1); G.SetColor (новый цвет (102,102,102)); G.DrawRect (0, 0, ширина-1, высота-1); g.setfont (mfont); g.setcolor (getrandcolor (160 200)); // Нарисуйте случайную линию для (int i = 0; i <155; i ++) {int x = random.nextint (ширина - 1); int y = random.nextint (высота - 1); int xl = random.nextint (6) + 1; int yl = random.nextint (12) + 1; g.drawline (x, y, x + xl, y + yl); } // Нарисуйте случайную линию из другого направления для (int i = 0; i <70; i ++) {int x = random.nextint (ширина - 1); int y = random.nextint (высота - 1); int xl = random.nextint (12) + 1; int yl = random.nextint (6) + 1; g.drawline (x, y, x - xl, y - yl); } // Сгенерировать случайные числа и преобразовать случайные числа в буквы строки srand = ""; for (int i = 0; i <6; i ++) {int itmp = random.nextint (26)+65; char ctmp = (char) itmp; srand += string.valueof (ctmp); g.setcolor (новый цвет (20+random.nextint (110), 20+random.nextint (110), 20+random.nextint (110))); g.drawstring (String.valueof (ctmp), 15*i+10,16); } Httpsession session = request.getsession (true); session.setattribute ("rand", srand); g.dispose (); Imageio.write (Image, "jpeg", response.getOutputStream ()); }}Информация о конфигурации сервлета в web.xml:
<? xml version = "1.0" Encoding = "utf-8"?> <web-app arser = "2,5" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/xmlschema electan "/www.w3. xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name> Authimaderservlet </servlet-name>> <serlet-class> com.util.servlet.authimageservlet </servlet> </servlet> <servlet-mapping> <servlet-name> authimageservlet </servlet-name> <url-pattern>/Servlet/Authimageservlet </url-pattern> </servlet> <beldeble-file-list> <berdelce-file> index.jspater> </servlet> <berdliefle-file> <berdelce-file> index. </werving-file-list> </web-app>
Таким образом, функция кода проверки реализована, что очень просто и практично. Конечно, есть более красивые и строгие способы. Заинтересованные друзья могут учиться глубоко. Здесь я поделюсь с вами относительно простым способом. Все рады критиковать и исправить меня.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.