Функция кода проверки: обычно при входе в систему или регистрации системы пользователи должны будут ввести код проверки, чтобы отличить поведение пользователей от поведения компьютерной программы. Цель состоит в том, чтобы предотвратить злонамеренную регистрацию, взломать пароль грубой силы и т. Д.
Идеи для реализации кодов проверки: используйте сервер, чтобы реализовать функцию случайного генерирования чисел и букв для формирования изображений, используйте страницу JSP, чтобы реализовать функцию отображения кодов проверки и кодов проверки ввода пользователя, а затем используйте класс сервера для получения ввода данных с помощью изображения и пользователя, чтобы определить, являются ли два данных согласованными.
Реализация кода
1. Напишите класс сервера, сгенерированный в цифрах и английском языке, исходный код:
пакет com; import java.awt.color; import java.awt.font; import java.awt.graphics; импорт java.awt.image.bufferedimage; импорт java.io.bytearrayoutputstream; impormage.io.ioexception; import java.io.printwriter; import.Imageio.ioexception; import java.io.printwriter; import.Image.Image.ioexception; import java.io.printwriter; javax.servlet.servletexception; import javax.servlet.servletoutputstream; импорт javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservelcesponse; javax.servlet.http.httpsession; public class logcheck расширяет httpservlet {public logcheck () {super (); } public void destry () {super.destroy (); } public void Doget (httpservletrequest, httpservletresponse response), бросает ServletException, ioException {DoPost (запрос, ответ); }/*CORE CODE реализации*/public void Dopost (httpservletrequest, httpservletresponse response) throws servletexception, ioexception {response.setContentType ("image/jpeg"); Httpsession session = request.getsession (); int ширина = 60; int height = 20; // Установите браузер, чтобы не кэшировать этот образ образа. response.setheader («Контроль кэша», «без каша»); response.setDateHeader («истекает», 0); // Создать изображение памяти и получить графический контекст BufferedImage Image = new BufferedImage (ширина, высота, bufferedimage.type_int_rgb); Graphics g = image.getGraphics (); /** Сгенерировать код случайной проверки* Таблица символов, которая определяет код проверки*/ string chars = "0123456789abcdefghijklmnopqrstuvwxyz"; char [] rands = new char [4]; for (int i = 0; i <4; i ++) {int rand = (int) (math.random () *36); rands [i] = chars.charat (rand); } /** Сгенерировать изображение* рисовать фон* / g.setcolor (новый цвет (0xdcdcdc)); G.FillRect (0, 0, ширина, высота); /** Случайно генерировать 120 интерференционных точек*/ for (int i = 0; i <120; i ++) {int x = (int) (math.random ()* width); int y = (int) (math.random ()*высота); int red = (int) (math.random ()*255); int green = (int) (math.random ()*255); int blue = (int) (math.random ()*255); G.SetColor (новый цвет (красный, зеленый, синий)); G.Drawoval (x, y, 1, 0); } g.setcolor (color.black); g.setfont (новый шрифт (null, font.italic | font.bold, 18)); // Вывод разных символов кода проверки на разных высотах g.drawstring ("+rands [0], 1, 17); g.drawstring (""+rands [1], 16, 15); g.drawstring (""+rands [2], 31, 18); g.drawstring (""+rands [3], 46, 16); g.dispose (); // Вставьте изображение в клиент ServletOutputStream sos = response.getOutputStream (); BytearRayOutputStream BAOS = новый BytearRayOutputStream (); Imageio.write (Image, "jpeg", Baos); byte [] buffer = baos.tobytearray (); response.setContentLength (buffer.length); sos.write (буфер); baos.close (); sos.close (); session.setattribute ("fectcode", new String (rands)); } public void init () Throws ServletException {// Поместите свой код здесь}} 2. Страница, используемая для отображения кода проверки :
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%string path = request.getContextPath (); string basePath = request.getScheme ()+": //"+request.getServername ()+":"+request.getSerperport () phate+"/";%> <t) <). "// W3C // DTD HTML 4.01 Transitional // en"> <html> <Head> <base href = "<%= basepath%>"> <tite> index </title> <meta http-equiv = "pragma" = "no-cache"> <meta http-equiv = "cache-control" "no-cache"> <meta http-equiv = "cache-control"> "meta http-equiv =" no-cache ". http-equiv = "истекает" content = "0"> <meta http-equiv = "Keywords" Content = "Keyword1, Keyword2, Keyword3"> <Meta http-equiv = "Описание" Content = "Это моя страница"> <!-<link rel = "stylsheet" type = "csss = href =" stils.c>->->->->->->->->->->->->-> <>-rel = "stylesheet" <form action = "yanzheng" method = "post"> <input type = "text" name = "name" size = "5" maxlength = "4"> <a href = "index.jsp"> <img src = "logCheck"> </a> <br> <br> <input type = "prete" value = "> </form> </hody> </html> </html> </html> </html>
3. Используется для проверки того, правильным ли введенный код проверки:
пакет com; import java.io.ioexception; import java.io.printwriter; import javax.jms.session; import javax.servlet.servletexception; импорт javax.servlet.http.httpservlet; import javax.servlet.htp.httpservlectrequest; javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsession; import javax.servlet.http.httpsession; открытый класс Янджэн расширяет httpservlet {public yanzheng () {super (); } public void destry () {super.destroy (); } public void Doget (httpservletrequest, httpservletresponse response), бросает ServletException, ioException {DoPost (запрос, ответ); } /*Core Code* / public void dopost (httpservletrequest, httpservletresponse response) throws servletexception, ioexception {string info = null; /*Получить входное значение*/ string value1 = request.getParameter ("name"); /*Получить значение изображения*/ httpsession session = request.getSession (); String value2 = (string) session.getAttribute ("feetCode"); /*Сравните два значения (буквы нечувствительны к случаям)*/ if (value2.equalsignorecase (value1)) {info = "Ввод кода проверки правильный"; } else {info = "Код проверки ввода ошибки"; } System.out.println (info); request.setattribute ("info", info); request.getRequestDispatcher ("/login.jsp"). } public void init () Throws ServletException {// Поместите свой код здесь}}4. Отображение интерфейса входной структуры (правильным ли код проверки ввода):
<%@ page language = "java" import = "java.util.*" pageencoding = "utf-8"%> <%string path = request.getContextPath (); string basePath = request.getScheme ()+": //"+request.getServername ()+":"+request.getSerperport () phate+"/";%> <t) <). "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>My JSP 'login.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content = "no-cache"> <meta http-equiv = "истекает" content = "0"> <meta http-equiv = "Keywords" Content = "Keyword1, Keyword2, Keyword3"> <Meta http-equiv = "Описание" content = "Это моя страница"> <!-<link relshiet "type =" text/conts " href = "styles.css"> -> </head> <body> < %= request.getattribute ("info") %> </body> </html>5. Структура проекта и эффект скриншотов:
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.