머리말:
Kaptcha의 도입과 Spring Kaptcha의 통합과 관련하여, 나는 다른 기사에서 자세히 설명했습니다. Spring Kaptcha Verification Code를 참조하십시오.
이 기사는 SpringBoot를 Kaptcha에 통합하는 두 가지 방법을 소개합니다.
개발 도구 및 기술 :
1. 아이디어 2017
2. Springboot 2.0.2
3. Kaptcha
공식적으로 시작 :
방법 1 : kaptcha.xml을 통해 구성합니다
1. 아이디어를 사용하여 새로운 스프링 초기 시작을 만듭니다
2. Kaptcha 종속성 추가 :
<!-Kaptcha Verification Code-> <pectionency> <groupId> com.github.penggle </groupid> <artifactid> kaptcha </artifactid> <bersion> 2.3.2 </version> </dependency>
3. 다음 컨텐츠와 함께 리소스에서 새로운 kaptcha.xml을 만듭니다.
kaptcha.xml
<? xml 버전 = "1.0"alcoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans"xmlns : xsi = "http://ww.w.w3.org/2001/xmlschema-instance" xsi : schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-kaptcha bean-> <bean id = "> apptchaprocer"> captchaprocerer "> <생성자-arg 유형 = "java.util.properties"> <!-세트 kaptcha 속성-> <props> <prop key = "kaptcha.border"> 예 </prop> <prop key = "kaptcha.border.color"> 105,179,90 </prop> <propl key = "kaptcha.textproducer.font.color"> blue </prop> <prop key = "kaptcha.image.width"> 100 </prop> <prop key = "kaptcha.image.height"> 50 </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. kep key = "kaptcha.session.key"> code </proc> <prop key = "kaptcha.textProducer.char.length"> 4 </prop> <prop key = "kaptcha.textProducer.font.names"> 송 글꼴, Kai Font, Microsoft Yahei </prop> <prop key = "kaptcha.textProducer.char.string"> 0123456789ABCEFGHIJKLMNOPQRSTUVWXYZ </prop> <prop key = "kaptcha.obscurificator.impl"> com.google.code.impl.waterripple </prop> <prop key = "kaptcha.noise.color"> black </prop> <prop key = "kaptcha.noise.impl"> com.google.code.kaptcha.impl.defaultnoise </prop key = "kaptcha.background.plear.from"> 185,56,213 </prop> <prop key = "kaptcha.background.clear.to"> white </prop> <prop key = "kaptcha.textProducer.char.space"> 3 </prop> </props> </constructor-arg> </bean> </property> </bean> </beans>
참고 : kaptcha.xml의 내용은 실제로 Spring이 Kaptcha를 통합 할 때 Spring-Kaptcha.xml의 내용과 동일합니다. 이는 Kaptcha를 스프링 컨테이너 관리에 전달하고 일부 속성을 설정 한 다음 필요할 때 직접 주입하는 것을 의미합니다.
4. kaptcha.xml로드 :
@ImportResource(locations = {"classpath:kaptcha/kaptcha.xml"}), 추가 하고이 주석을 추가하면 SpringBoot에 kaptcha.xml 파일을로드합니다. Kaptcha.xml의 경로를 잘못 작성해서는 안되며 ClassPath는 여기서 리소스 디렉토리입니다.
5. 검증 코드를 생성하려면 컨트롤러를 작성하십시오.
CodeController.java
@ControllerPublic 클래스 CodeController {@autowired 개인 프로듀서 Captchaproducer = null; @requestmapping ( "/kaptcha") public void getKaptchaimage (httpservletrequest 요청, httpservletresponse 응답)는 예외 {httpsession session = requestsession (); response.setDateHeader ( "만료", 0); response.setHeader ( "캐시 제어", "무자개, 없음, 캐시가 없음, 꼭 봐야 할 반복"); response.addheader ( "캐시 제어", "post-check = 0, pre-Check = 0"); Response.SetHeader ( "Pragma", "No-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); {out.flush (); } 마침내 {out.close (); }}}참고 :이 컨트롤러 경로에서 kaptcha.xml로 구성된 Bean을 주입 한 다음이를 사용하여 확인 코드를 생성하고 클라이언트에 확인 코드를 출력 할 수 있습니다. 이 클래스의 경로를 기억하십시오. 프론트 엔드 페이지의 검증 코드의 SRC는이 경로를 가리켜야합니다.
6. 새 검증 코드 비교 도구 만들기 :
Codeutil.java
공개 클래스 CodeUtil { / ** * 획득 한 프론트 엔드 매개 변수를 문자열 유형으로 변환 * @param key * @param key * @return * / public static string getstring (httpservletrequest request, String key) {try {string result = request.getParameter (키); if (result! = null) {result = result.trim (); } if ( "". Equals (result)) {result = null; } 반환 결과; } catch (예외 e) {return null; }} /** * 검증 코드 확인 * @param request * @return * /public static boolean checkverifycode (httpservletrequest request) {// 생성 된 검증 코드를 가져옵니다. // 사용자 문자열에서 입력 한 확인 코드를 가져옵니다. verifyCodeActual = codeUtil.getString (요청, "verifyCodeActual"); if (verifycodeactual == null ||! verifycodeactual.equals (verifycodeexpected)) {return false; } true를 반환합니다. }}참고 :이 클래스는 생성 된 검증 코드를 사용자가 입력 한 확인 코드와 비교하는 데 사용됩니다. 생성 된 확인 코드는 세션에 자동으로 추가되며 GetParameter를 통해 사용자 입력을 얻습니다. getParameter의 핵심 값은 페이지의 확인 코드의 이름 값과 일치해야합니다.
7. 검증 코드 사용 :
controller
helloworld.java
@RestControllerPublic Class HelloWorld {@requestmapping ( "/hello") public String Hello (httpservletRequest request) {if (! codeUtil.checkverifyCode (request)) {return "verification code!"; } else {return "Hello, World"; }}} PAGE
Hello.html
<! docType html> <html lang = "en"> <head> <meta charset = "utf-8"> <title> title </title> <script type = "text/javaScript"> function.getElementById ( 'captcha_img'). src = "/kaptcha?"; }. 값 = "제출"/> </form> </body> </html>
참고 : 검증 코드는 본질적으로 그림이므로 <Img> 태그를 사용한 다음 src = "/kaptcha"를 사용하여 확인 코드를 생성하는 컨트롤러의 경로를 가리 킵니다. Click-to-Switch 함수를 실현하려면 OnClick = "Compert ()"을 통해 JS 코드를 호출하십시오. <input name = "verifycodeactual">의 이름 값에주의를 기울이고, codeutil에서 getParameter () 요청 메소드를 통해 사용자가 입력 한 확인 코드를 얻을 때 전달 된 키 값은 여기의 이름 값과 일치해야합니다.
8. 테스트 :
올바른 확인 코드를 입력하십시오
검증이 통과되었습니다
잘못된 확인 코드를 입력하십시오
확인이 실패했습니다
방법 2 : 구성 클래스를 통해 KAPTCHA를 구성합니다
1. Kaptcha를 구성하십시오
방법 1과 비교하여 하나의 증가 및 두 가지 감소.
줄이다:
①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", "Yes"); 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"); 속성 .setProperty ( "kaptcha.session.key", "code"); Properties.setProperty ( "Kaptcha.textProducer.char.length", "4"); properties.setProperty ( "kaptcha.textproducer.font.names", "송 글꼴, Kai Font, Microsoft Yahei"); 구성 구성 = 새 구성 (속성); Captchaproducer.setConfig (config); Captchaproducer를 반환합니다. }}참고 :이 클래스는 메소드 1에서 kaptcha.xml에 해당하는 Kaptcha를 구성하는 데 사용됩니다. IOC 컨테이너에 Kaptcha를 추가 한 다음 세트 속성이있는 인스턴스로 돌아가서 CodeController에 주입하십시오. CodeController에서 검증 코드를 생성하는 데 사용할 수 있습니다. CAPTCHAPRODUCER를 반환하기 위해 특별한주의를 기울이십시오. 민간 생산자 Captchaproducer = null에서 Captchaproducer의 이름은 콩이 적재되지 않습니다.
2. 테스트 :
올바른 검증 코드를 입력하십시오.
검증이 통과되었습니다
잘못된 확인 코드를 입력하십시오
확인이 실패했습니다
두 번의 검증 코드가 두 가지 방법에 따라 생성된다고 설명하기 위해 첫 번째 및 두 번째 방법의 검증 코드는 다른 속성을 설정합니다. 그림에서, 우리는 두 번의 검증 코드의 색상, 간섭선, 배경 등이 다르다는 것을 알 수 있습니다.
요약 :
1. 프로세스 분류 :
어떤 방법 으로든 먼저 스프링 컨테이너에 Kaptcha를 추가해야합니다. 즉, Kaptcha Bean이 있어야합니다. 그런 다음 새 컨트롤러를 생성하고 Kaptcha Bean을 컨트롤러에 주입하여 검증 코드를 생성합니다. 그런 다음 검증 코드를 비교하고 검증 코드 비교를 위해 테스트 컨트롤러의 도구 클래스를 호출하는 도구 클래스가 있습니다. 마지막으로 프론트 엔드 페이지에서 <img src = "/生成验证码的controller的路由"> 만 사용하면 확인 코드를 얻습니다. 이 IMG 태그에 클릭 이벤트를 추가하면 "클릭하여 확인 코드를 전환"할 수 있습니다.
2. 스프링 통합과 비교 KAPTCHA
Spring Integration Kaptcha는 또한 두 가지 방법을 소개합니다. 구성은 Web.xml에서 가장 간단하며 검증 코드를 생성하는 컨트롤러를 작성할 필요가 없습니다. 페이지에서 SRC를 사용하여 web.xml에서 Kaptcha의 서블릿의 <Url-Pattern> 값을 가리 킵니다.
Kaptcha를 통합하는 Springboot의 두 방법은 Kaptcha를 통합하는 Spring의 두 번째 방법과 유사합니다. 먼저 Bean을 구성한 다음 컨트롤러를 사용하여 검증 코드를 생성하는 데 사용됩니다. 프론트 엔드는 SRC를 사용 하여이 컨트롤러를 가리 킵니다. 차이점은 검증 코드를 생성하는 컨트롤러가 /xxx 인 경우 SpringBoot를 Kaptcha를 통합 할 때 SRC = "XXX.JPG" src = "/xxx"。
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.