Я считаю, что все знакомы с кодами проверки. Если вы подаете заявку на учетную запись или входите в систему в некоторых случаях, вам потребуется ввести код проверки. После статистики вероятность успешного прохождения кода проверки в одной проверке составляет 90%, что не высока. Так много людей определенно сомневаются в необходимости этого дизайна, который снижает пользовательский опыт, но Гегель сказал: все, что является разумным, является реалистичным; Все, что реалистично, рационально. Далее, давайте узнаем о коде проверки.
Код проверки - это публичная полностью автоматическая программа, которая различает, является ли пользователь компьютером или человеком. Он используется для предотвращения взлома вредоносного пароля, проведения билетов и наводнения на форуме, а также предотвращение постоянного входа в хакеры через грубую силу трещины. Он используется в банках, сообществах, форумах, системах голосования и т. Д.
Без лишних слов давайте посмотрим на четыре способа, которые я знаю, для реализации кода проверки в Java.
Метод 1:
Первым методом был первым, о чем я подумал, и это была самая простая логика реализации, но она была чрезвычайно эффективной и безопасной.
Конкретная операция: 1. Используйте Photoshop для создания изображения кода проверки. Прямоугольная картина может иметь необходимые английские буквы, цифры или китайцы (как указано выше)
2. Отображение изображения на странице управления Swing или JSP
3. Сопоставьте соответствующую строку кода проверки для каждого изображения в коде
4. При отправке получайте строку в компоненте или текстовом поле и строку каждого изображения, чтобы сравнить ее с методом evelsals ().
Недостатком является то, что процесс создания изображений кода проверки слишком много времени, и метод реализации чрезвычайно низкий, и настоятельно рекомендуется реализовать его таким образом. Следующий метод станет более эффективным, красивым и относительно безопасным.
Метод 2:
Здесь мы говорим о Java Web и реализации кода проверки в рамках Сервлета, и логика все еще очень ясна.
Чтобы устранить более простой код реализации, давайте начнем с кода фронтального ключа:
Когда мы нажимаем на «Не могу ясно видеть», изображение кода проверки будет обновлено, и функция JS будет вызвана для сброса пути изображения, чтобы заменить изображение. Пожалуйста, смотрите код ниже. В коде <%= request.getContextPath ()%> предназначен для решения проблемы относительных путей и может вернуть корневой путь сайта. /Сервлет/Изображения - это целое, указывающее на сервлет ImageServlet. Зачем нам нужно добавлять /сервлет раньше? Поскольку мы создали отображение конфигурации в web.xml, это можно понимать как изменение более длинного имени. Затем посмотрите на следующую функцию JS. У некоторых людей могут быть вопросы, зачем получать текущее время и добавлять его к концу пути? На самом деле, это должно решить проблему кеша браузера. Это проблема, что изображение кода проверки было изменено после запуска изображений, но кэш не изменился. С помощью разных времен каждый момент кеш браузера может быть недействительным.
<script type = "text/javascript"> function reloadCode () {var time = new Date (). getTime (); document.getElementById ("ImageCode"). src = "< %= request.getContextPath () %>/Servlet/ImageServlet? D ="+Time; } </script>Вот информация о конфигурации ключей в web.xml:
<script type = "text/javascript"> function reloadCode () {var time = new Date (). getTime (); document.getElementById ("ImageCode"). src = "< %= request.getContextPath () %>/Servlet/ImageServlet? D ="+Time; } </script>Затем давайте посмотрим, как ключевые изображения генерируют изображения:
<servlet> <servlet-name>ImageServlet</servlet-name> <servlet-class>com.muke.ImageServlet</servlet-class> </servlet> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.muke.LoginServlet</servlet-class> </servlet> <servlet-mapping> <Servlet-name> Imageservlet </servlet-name> <url-pattern>/Servlet/Imageservlet </url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name> loginservlet </servlet-name> <url-pattern>/Servlet/loginservlet </url-pattern> </servlet-mapping> movlet>
Если вы хотите более ярко описать, как реализован этот код проверки, то только одно слово «рисунок» звучит похоже на первый метод, и он все еще относительно низок, но эффективность использования кода для автоматического «рисования», код проверки определенно увеличивает бесчисленное количество времени. Давайте посмотрим на приведенный выше код. Во -первых, объект BuffereMage BI создается. BI используется для рисования изображения кода проверки. Затем, используя BI, чтобы получить кисть G, и используйте G, чтобы нарисовать прямоугольный фон объекта. Затем, используя простую логику для вызова обще используемого метода ShorString () в Java, чтобы нарисовать символы кода проверки на прямоугольнике. В то же время строка добавляется в объект StringBuffer Variable String в последовательности и, наконец, хранится в встроенном сеансе объекта JSP для сравнения после отправки кода проверки. Чтобы отобразить код проверки, нам также необходимо написать сгенерированное изображение кода проверки в потоку Imageio в определенном формате изображения.
Как видно из LoginServlet ниже, вы можете сравнить строку в поле для представления кода проверки, получив строку, которая была только что сохранена в ImageServlet. Вы можете изменить струны на нижний регистр или прописные, чтобы игнорировать прописное покрытие.
Public Class Imageservlet расширяет httpservlet {public void Doget (httpservletrequest, httpservletresponse response) бросает ioException {buffereMage bi = new BuffereMage (, BufferedImage.Type_int_rgb); Графика g = bi.getGraphics (); Цвет C = новый цвет (,); g.setcolor (c); G.FillRect (,,,); char [] ch = "abcdefghijklmnopqrStuvwxyz" .tochararray (); Случайный r = new Random (); int len = ch.length, index; StringBuffer sb = new StringBuffer (); for (int i =; i <; i ++) {index = r.nextint (len); g.setcolor (new Color (r.nextint (), r.nextint (), r.nextint (), r.nextint ()); g.drawstring (ch [index]+"", (i*)+,); sb.append (ch [index]); } request.getSession (). setattribute ("piccode", sb.tostring ()); Imageio.write (Bi, "jpg", response.getOutputStream ()); }}Вот легенда реализации:
Выше приведено соответствующие знания о производстве кода проверки Java, введенном вам редактором. Я надеюсь, что это будет полезно для вас! Я представлю вам производство кода проверки Java (часть 2). Заинтересованные друзья, пожалуйста, обратите внимание на веб -сайт wulin.com!