Происхождение кода проверки
В разработке веб -проектов, чтобы не позволить некоторым людям использовать автоматические инструменты (такие как автоматические машины регистрации) для обработки пакетных данных, коды проверки добавляются для проверки в различных функциональных узлах для достижения эффекта блокирования автоматического программного обеспечения
Наиболее классическими приложениями являются: код графической проверки регистрации веб -сайтов; Далее, с помощью Java Technology, в сочетании с сервисом, для вашей ссылки в сочетании с сервисом.
2. Реализовать эффект кода графического проверки на странице регистрации
1. Создать веб -проект: java_servlet_verifyimg
2. Создайте контроллер, который автоматически генерирует коды проверки графика - VerifyImgServlet
пакет com.phome.util; import java.awt.color; import java.awt.font; import java.awt.graphics2d; import java.awt.image.bufferedimage; импорт java.io.ioexception; import java.util.random; import javax.servlet.servletexcection; javax.servlet.servletoutputstream; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; импорт javax.servlet.http.httpservlectresponse; import com.sun.codec.jpeg.jpegserponse; import.sun.codec.jpeg.jpeg. com.sun.image.codec.jpeg.jpegimageEncoder; открытый класс VerifyImgServlet Extends httpservlet { / ** * * / private static final long serialversionuid = 1l; // Установить случайный словарь символов. 0,o,1,I, etc. public static final char[] CHARS = { '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; public static random Random = new Random (); // Случайное число объект public static String getRandomString () {StringBuffer buffer = new StringBuffer (); // Строковой кэш для (int i = 0; i <6; i ++) // шесть циклов для получения символов {buffer.append (chars [random.nextint (chars.length)]); // принимать один символ случайным образом за раз} return buffer.tostring (); } public Static Color getRandomColor () {return New Color (random.nextint (255), random.nextint (255), random.nextint (255)); } public Static Color GetReverSecolor (Color C) {return New Color (255 - C.GetRed (), 255 - C.GetGreen (), 255 - C.GetBlue ()); } public Static Color GetReverSecolor (Color C) {return New Color (255 - C.GetRed (), 255 - C.GetGreen (), 255 - C.GetBlue ()); } public void Doget (httpservletRequest, httpservletresponse response) Throws ServletException, ioException {response.setContentType ("Image/jpeg"); // Установить выходной тип, чтобы не опустить string randomString = getRandomString (); // Вызовите метод, чтобы генерировать случайную строку для получения и принятия случайной строки request.getSession (true) .SetAttribute ("RandomString", RandomString); // хранить строку в сеансе int width = 100; // ширина изображения int height = 30; // Цвет цвета высоты изображения = getRandomColor (); // Получить случайный цвет для цвета фона цвета обратный = getReverseColor (цвет); // инвертировать цвет для цветового цвета переднего плана BufferedImage bi = new BufferedImage (ширина, высота, bufferedimage.type_int_rgb); // Создать цветное изображение Graphics2d g = bi.creategraphics (); // Получить объект рисования g.setfont (новый шрифт (font.sans_serif, font.bold, 16)); // Установить шрифт g.setcolor (color); // установить цвет g.fillrect (0, 0, ширина, высота); // нарисовать фон g.setcolor (обратный); // установить цвет G.DrawString (RandomString, 18, 20); // рисовать случайные символы для (int i = 0, n = random.nextint (100); i <n; i ++) // Нарисуйте до 100 точек шума {g.drawrect (random.nextint (width), random.nextint (height), 1, 1); // Случайные точки шума} ServletOutputStream OUT = response.getOutputStream (); // кажется, что он получает выходной поток jpegimageencoder encoder = jpegcodec.createjpegenceder (out); // encoder encoder.encode (bi); // кодирование изображения out.flush (); // Вывод клиенту} public void Dopost (httpservletrequest, httpservletresponse response) throws servletexception, ioexception {this.doget (запрос, ответ); }}3. Создать контроллер регистра - Sgistservlet
пакет com.phome.servlet; импорт java.io.ioexception; import javax.servlet.servletexception; импорт javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.httpservonse; javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsession;/** * Регистрационный контроллер * @author zuoyi * */public class registservlet httpservlet {/** *//private static final long serialversionuid = 1l; @Override Protected void Doget (httpservletrequest req, httpservletresponse resp) бросает Servletexception, ioException {this.dopost (req, resp); } @Override Protected void Dopost (httpservletrequest req, httpservletresponse resp) throws servletexception, ioexception {// Получить код случайной проверки регистрации из сеанса httpsession session = req.getSession (); String randomSting = (string) session.getAttribute ("randomString"); // Получить пользовательский код проверки ввода string inputrandomString = req.getParameter ("randomStr"); // Убедитесь, что код проверки передается, и зарегистрируйте его имитирует if (randomString.equals (inputrandomString)) {req.setattribute («resinfo», «Поздравляю! Регистрация была успешной!»); } else {req.setAttribute ("resinfo", "код проверки вводится неправильно, пожалуйста, проверьте и зарегистрируйтесь еще раз!"); } // Если регистрация успешна или не удалась, перейдите на страницу Result.jsp, чтобы просмотреть результаты регистрации. Полем Полем req.getRequestDispatcher ("result.jsp"). }}4. Настройка сервлета
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" = "webapp" = "webapp" = "webapp_dapp_3_0.0. <SIVEL-name> simg </display-name> <!-Настройка сервиса регистрации пользователя-> <servlet> <servlet-name> registservlet </servlet-name> <servlet-class> com.phome.servlet.registerservlet </servlet-class> </servlet> <servlet> <servlet-name> registservlet </servlet-name> <servlet> <servlet-name> registservlecer </servlet> <url-pattern>/regist.action</url-pattern> </servlet-mapping> <!-- Configure graph verification code servlet --> <servlet> <servlet-name>verifyimg</servlet-name> <servlet-class>com.phome.servlet.VerifyImgServlet</servlet-class> </servlet> <servlet-mapping> <servlet-mapping> <Servlet-name> VerifyImmg </servlet-name> <url-pattern>/verifyImg.action </url-pattern> </servlet-mapping> <selclive-file-list> <welcely-file> index.html </wervelode-file> <selclive-file> index.htm </wervedied> <belcome-file> index.jsp </wellow> welpende-file. <welcelcoble> default.html </werving-file> <selcoveryfile> default.htm </wervedied-file> <selcopport-file> default.jsp </wervedied-file> </wervedied-file-list> </web-app>
5. Создать страницу тестирования регистрации - regist.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "gb18030"%> <%string path = request.getContextPath (); String basePath = request.getScheme ()+": //"+request.getServername ()+":"+request.getSerport ()+"/"/" "// W3C // DTD HTML 4.01 Transitional // en"> <html> <Head> <base href = "<%= basepath%>" rel = "enferlow" rel = "внешний nofollow"> <title> my jsp 'index.jsp' stage-contement </title> <meta http-aceviv = "pragma 'no-contex" no-contex "no-contex". http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "Content" Content = ", ключевое слово1, ключевое слово3"> <meta http-equiv = "description". type = "text/css" href = "styles.css" rel = "внешний nofollow" rel = "внешний nofollow"> -> </head> <body> <form action = "$ {pagecontext.request.contextPath}/regist.action" method = "post"> username: <input = "textpath name =" username "/>" vintame: "<Input =" name = "usernam name = "password"/> <br/> Пожалуйста, введите код проверки для регистрации: <img src = "$ {pagecontext.request.contextPath}/verifyimg.action"/> <input type = "text" name = "randomStr"/> <br/> <input type = "value =" regist "/> </> </> </> <input =" value = regist "/> </> </> </html> </html> </html> </html> </html> </html> </html> 5.1 Создать страницу результатов регистрации - result.jsp
<%@ page language = "java" import = "java.util.*" pageencoding = "gb18030"%> <%string path = request.getContextPath (); String basePath = request.getScheme ()+": //"+request.getServername ()+":"+request.getSerport ()+"/"/" "// W3C // DTD HTML 4.01 Transitional // en"> <html> <Head> <base href = "<%= basepath%>" rel = "enferlow" rel = "внешний nofollow"> <title> my jsp 'index.jsp' stage-contement </title> <meta http-aceviv = "pragma 'no-contex" no-contex "no-contex". http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "expires" content = "0"> <meta http-equiv = "Content" Content = ", ключевое слово1, ключевое слово3"> <meta http-equiv = "description". type = "text/css" href = "styles.css" rel = "enfullow nofollow" rel = "внешний nofollow"> -> </head> <body> $ {requestScope.resinfo} </body> </html>6. тест
(1) а. Откройте браузер и введите тестовый адрес: http: // localhost: 8080/java_servlet_verifyimg; Появится страница, показанная на рисунке ниже
беременный Введите учетную запись регистрации, пароль и код проверки и нажмите «Регист», чтобы отправить
в Результаты испытаний, перейдите на страницу регистрации передачи, предлагая успешно регистрацию
(2) Откройте страницу регистрации
Введите код регистрации ошибок
Страница результатов теста
над!
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.