Предисловие:
Что касается введения капче и интеграции Spring Kaptcha, я подробно объяснил в другой статье. Пожалуйста, обратитесь к: Spring Kaptcha Verification Code.
В этой статье будут представлены два способа интеграции Springboot в Капчу.
Инструменты и технологии разработки:
1. Идея 2017
2. Springboot 2.0.2
3. Капча
Официально начинается:
Метод 1: Настройка через kaptcha.xml
1. Создайте новую Spring Initiazr, используя идею
2. Добавить зависимости капчи:
<!-Код проверки Kaptcha-> <dependency> <groupid> com.github.penggle </groupid> <artifactid> kaptcha </artifactid> <sersive> 2.3.2 </version> </depertive>
3. Создайте новый kaptcha.xml под ресурсами, со следующим контентом:
kaptcha.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- Generate kaptcha bean--> <bean id="captchaProducer"> <property name="config"> <bean> <constructor-arg type = "java.util.properties"> <!-Установить свойства kaptcha-> <props> <prop key = "kaptcha.border"> yes </prop> <prop key = "kaptcha.border.color"> 105,17,90 </prop> < key = "kaptcha.textproducer.font.color"> blue </prop> <prop key = "kaptcha.image.width"> 100 </prop> <prop key = "kaptcha.image.height"> 50 </prop> <prop key = "kaptcha.image.height"> 50 </prop> <prop> key = "kaptcha.image.height"> 50 </prop> <prop key = "kaptcha.image.height"> 50 </prop> <prop key = "kaptcha.image.height"> 50 </prop> <prop key = "kaptcha. key = "kaptcha.session.key"> code </prop> <prop key = "kaptcha.textproducer.char.length"> 4 </prop> <prop key = "kaptcha.textproducer.font.names"> song font, kai font, microsoft yahei </prop> < key = "kaptcha.textproducer.char.string"> 0123456789abcefghijklmnopqrstuvwxyz </prop> <prop key = "kaptcha.obscurificator.impl"> com.google.code.kaptcha.impl.waterripple </prop> <prop. key = "kaptcha.noise.color"> black </prop> <prop key = "kaptcha.noise.impl"> com.google.code.kaptcha.impl.defaultnoise </prop> <prop key = "kaptcha.background.clear.from"> 185,5,213 </prop> key = "kaptcha.background.clear.to"> white </prop> <prop key = "kaptcha.textproducer.char.space"> 3 </prop> </props> </constructor-arg> </bean> </свойство> </bean> </beans>
Примечание. Содержание в kaptcha.xml на самом деле совпадает с содержанием в Spring-Kaptcha.xml, когда Spring интегрирует Kaptcha. Это означает передачу Kaptcha на управление контейнерами пружины, устанавливать некоторые свойства, а затем непосредственно вводить при необходимости.
4. Загрузите kaptcha.xml:
Добавить @ImportResource(locations = {"classpath:kaptcha/kaptcha.xml"}), добавьте эту аннотация, Springboot загрузит файл kaptcha.xml. Обратите внимание, что путь kaptcha.xml не должен быть написан неправильно, то табличная группа - это каталог ресурсов здесь.
5. Напишите контроллер для генерации кода проверки:
CodeController.java
@Controllerpublic class codecontroller {@autowired частного продюсера captchaproducer = null; @Requestmapping ("/kaptcha") public void getkaptChaimage (httpservletrequest, httpservletresponse response), бросает исключение {httpsession session = request.getSession (); response.setDateHeader («истекает», 0); response.setheader («Контроль кэша», «без магазина, без качания, обязательно-ревалидат»); response.addheader ("Cache-Control", "post-check = 0, pre-check = 0"); response.setheader ("pragma", "без Cache"); response.setContentType ("Image/jpeg"); // генерировать код проверки строки captext = captchaproducer.createtext (); session.setattribute (constants.kaptcha_session_key, captext); // Написать BufferedImage на клиент Bi = captChaproDucer.createImage (capText); ServletOutputStream OUT = response.getOutputStream (); Imageio.write (Bi, «JPG», Out); try {out.flush (); } наконец {out.close (); }}}ПРИМЕЧАНИЕ. Включите фасоль, только что настроенный в kaptcha.xml в этом пути контроллера, а затем вы можете использовать его для генерации кода проверки и вывести код проверки клиенту; Помните, как маршрут этого класса, SRC кода проверки линейной страницы, должен указывать на этот маршрут.
6. Создайте новый инструмент сравнения кода проверки:
CodeUtil.java
public Class CodeUtil { / ** * преобразовать полученный параметр переднего параметра в тип строки * @param запрос * @param * @return * / public Static String getString (httpservletrequest, string key) {try {string result = request.getparameter (key); if (result! = null) {result = result.trim (); } if ("".. equals (result)) {result = null; } return Result; } catch (Exception e) {return null; }} /** * Проверка кода проверки * @param запрос * @return * /public static boolean keepverifycode (httpservlectrequest) {// Получить сгенерированный код проверки verifycodeexpected = (String) request.getsession (). // Получить код проверки, введенный пользовательской строкой verifycodeactual = codeUtil.getString (запрос, "VerifyCodeactual"); if (verifycodeactual == null ||! verifycodeactual.equals (verifycodeexprected)) {return false; } вернуть true; }}Примечание. Этот класс используется для сравнения сгенерированного кода проверки с кодом проверки, введенного пользователем. Сгенерированный код проверки будет автоматически добавлен в сеанс, а пользовательский ввод будет получен через GetParameter. Обратите внимание, что значение ключа getParameter должно соответствовать значению имени кода проверки на странице.
7. Используйте код проверки:
①controller
Helloworld.java
@Restcontrollerpublic class helloworld {@requestmapping ("/hello") public String hello (httpservlectrequest) {if (! CodeUtil.checkverifyCode (запрос)) {return "Код проверки неверен!"; } else {return "Привет, мир"; }}} ② страница
Привет.html
<! Doctype html> <html lang = "en"> <head> <meta charset = "UTF-8"> <Title> title </title> <script type = "text/javascript"> function rebresh () {document.getElementbyId ('captcha_img'). Src = "/kaptcha? } </script></head><body><form action="/hello" method="post"> Verification code: <input type="text" placeholder="Please enter verification code" name="verifyCodeActual"> <div> <img id="captcha_img" onclick="refresh()" src="/kaptcha" /> </div> <input type="submit" value="submit" /> </form> </body> </html>Примечание. Код проверки, по сути, является изображением, поэтому используйте тег <img>, а затем используйте src = "/kaptcha", чтобы указывать на маршрут контроллера, который генерирует код проверки; Вызовите код JS через onclick = "rebresh ()", чтобы реализовать функцию щелчка на переключение; Обратите внимание на значение имени в <input name = "verifycodeactual">, и значение ключа, передаваемое при получении кода проверки, введенного пользователем через метод getParameter () в CodeUtil, должно соответствовать значению имени здесь.
8. Тест:
Введите правильный код проверки
Проверка прошла
Введите неправильный код проверки
Проверка не удалась
Метод 2: Настройка Kaptcha через класс конфигурации
1. Настройте Kaptcha
По сравнению с первым методом один увеличивается и два уменьшаются.
уменьшать:
①delete kaptcha.xml ②delete @ImportResource(locations = {"classpath:kaptcha/kaptcha.xml"}) аннотация в классе запуска
увеличивать:
① Создайте новый класс конфигурации Kaptchaconfig, контент следующим образом:
Kaptchaconfig.java
@ConfigurationPublic Class kaptchaconfig {@bean public defaultkaptcha getDefaultkaptcha () {defaultkaptcha captchaproducer = new defaultkaptcha (); Свойства свойства = новые свойства (); Properties.SetProperty ("kaptcha.border", "Да"); Properties.SetProperty ("kaptcha.border.color", "105,179,90"); Properties.SetProperty ("kaptcha.textProducer.font.color", "Blue"); Properties.SetProperty ("kaptcha.image.width", "110"); Properties.SetProperty ("kaptcha.image.height", "40"); Properties.SetProperty ("kaptcha.textproducer.font.size", "30"); Properties.SetProperty ("kaptcha.session.key", "code"); Properties.SetProperty ("kaptcha.textProducer.char.length", "4"); Properties.SetProperty ("kaptcha.textproducer.font.names", "Song Font, Kai Font, Microsoft Yahei"); Config config = new config (свойства); captchaproducer.setConfig (config); вернуть капхапродусер; }}ПРИМЕЧАНИЕ. Этот класс используется для настройки Kaptcha, что эквивалентно kaptcha.xml в методе 1. Добавить kaptcha в контейнер IOC, затем вернитесь к экземпляру со свойствами SET и, наконец, введите его в CodeController. Вы можете использовать его для генерации кода проверки в CodeController. Обратите особое внимание, чтобы вернуть Captchaproducer; Название капхапродуцера в частном продюсере CaptChaproducer = null;, иначе боб не будет загружен.
2. Тест:
Введите правильный код проверки:
Проверка прошла
Введите неправильный код проверки
Проверка не удалась
Чтобы объяснить, что коды проверки двух раз генерируются на основе двух методов, коды проверки первого и второго методов устанавливаются разные атрибуты. На картинке мы видим, что цвета, интерференционные линии, фон и т. Д. Кодов проверки двух раз различны.
Суммировать:
1. Сортировка процесса:
Независимо от того, каким образом вы должны сначала добавить Kaptcha в пружинный контейнер, то есть должен быть боб Kaptcha; Затем создайте новый контроллер и введите бобы Kaptcha в контроллер для генерации кодов проверки; Тогда есть класс инструментов, который сравнивает код проверки, и вызовут класс инструментов в контроллере тестирования для сравнения кода проверки; Наконец, на передней странице вам нужно только использовать <img src = "/生成验证码的controller的路由"> для получения кода проверки. Добавив событие Click в этот тег IMG, вы можете понять «Нажмите, чтобы переключить код проверки».
2. Сравнение с весенней интеграцией капча
Spring Integration Kaptcha также вводит два метода. Конфигурация является самым простым в web.xml, и нет необходимости писать контроллер, который генерирует код проверки. На странице используйте SRC, чтобы указать на <Url-pattern> значение сервлета Kaptcha в web.xml.
Оба метода интеграции Springboot, интегрирующей Kaptcha, аналогичны второму методу интеграции Spring Kaptcha. Сначала они используются для настройки бобов, а затем используют контроллеры для генерации кодов проверки. Фронт-энд использует SRC, чтобы указывать на этот контроллер. Разница в том, что если контроллер, который генерирует коды проверки, является /xxx, то Src = "xxx.jpg", когда Springboot интегрирует Kaptcha src = "/xxx"。
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.