나는 모두가 검증 코드에 익숙하다고 생각합니다. 계정을 신청하든 경우에 따라 로그인하든 확인 코드를 입력해야합니다. 통계 후 한 번의 검증 코드를 성공적으로 전달할 확률은 90%이며 이는 높지 않습니다. 많은 사람들이 사용자 경험을 줄이는이 디자인의 필요성을 의심 할 것이지만 헤겔은 다음과 같이 말했습니다 : 합리적인 모든 것은 현실적입니다. 현실적인 모든 것은 합리적입니다. 다음으로 확인 코드에 대해 알아 보겠습니다.
검증 코드는 사용자가 컴퓨터인지 개인인지를 구별하는 공개적으로 완전 자동 프로그램입니다. 악의적 인 비밀번호 크래킹, 티켓 스 와이프 및 포럼 홍수를 방지하는 데 사용되며 해커가 무차별 인력 크래킹을 통해 지속적으로 로그인하는 것을 방지합니다. 은행, 커뮤니티, 포럼, 투표 시스템 등에 사용됩니다.
더 이상 고민하지 않고 Java에서 검증 코드를 구현하는 4 가지 방법을 살펴 보겠습니다.
방법 1 : 방법 1
첫 번째 방법은 내가 가장 먼저 생각한 것이었고 가장 간단한 구현 논리 였지만 매우 효율적이고 안전했습니다.
특정 작업은 다음과 같습니다. 1. Photoshop을 사용하여 확인 코드 사진을 만듭니다. 직사각형 그림에는 영어 편지, 숫자 또는 중국어가 필요할 수 있습니다 (위와 같이)
2. 스윙 컨트롤 또는 JSP 페이지에 이미지 표시
3. 코드의 각 이미지에 대한 해당 확인 코드 문자열 일치
4. 제출할 때 구성 요소 또는 텍스트 상자와 각 그림의 문자열을 가져와 equals () 메소드와 비교하십시오.
단점은 검증 코드 사진을 만드는 프로세스가 너무 시간이 많이 걸리고 구현 방법이 매우 낮으며 이러한 방식으로 구현하는 것이 좋습니다. 다음 방법은보다 효율적이고 아름답고 비교적 안전해질 것입니다.
방법 2 : 방법 2.
여기서 우리는 Servlet에서 Java Web과 Verification Code 구현에 대해 이야기하며 논리는 여전히 매우 명확합니다.
더 간단한 구현 코드를 제거하려면 프론트 엔드 키 코드부터 시작하겠습니다.
"명확하게 볼 수 없음"을 클릭하면 검증 코드 이미지가 새로 고쳐지고 이미지를 대체하기 위해 이미지 경로를 재설정하기 위해 JS 함수가 호출됩니다. 아래 코드를 참조하십시오. 코드에서 <%= request.getContextPath ()%>는 상대 경로의 문제를 해결하고 사이트의 루트 경로를 반환 할 수 있습니다. /servlet/imageservlet은 전체적으로 imageservlet의 서블릿을 가리키고 있습니다. 전에 /서블릿을 추가 해야하는 이유는 무엇입니까? Web.xml에서 구성 매핑을 만들었으므로 더 긴 이름을 변경하는 것으로 이해할 수 있습니다. 그런 다음 다음 JS 기능을보십시오. 어떤 사람들은 질문이있을 수 있습니다. 왜 현재 시간을 얻고 경로 끝에 추가합니까? 실제로 이것은 브라우저 캐시의 문제를 해결하기위한 것입니다. ImageServlet이 트리거 된 후에 확인 코드 이미지가 변경되었지만 캐시가 변경되지 않았습니다. 매 순간 다른 시간의 도움으로 브라우저 캐시를 무효화 할 수 있습니다.
<script type = "text/javaScript"> 함수 repoadCode () {var time = new date (). gettime (); document.getElementById ( "imageCode"). src = "< %= request.getContextPath () %>/servlet/imageServlet? d ="+time; } </스크립트>Web.xml의 주요 구성 정보는 다음과 같습니다.
<script type = "text/javaScript"> 함수 repoadCode () {var time = new date (). gettime (); document.getElementById ( "imageCode"). src = "< %= request.getContextPath () %>/servlet/imageServlet? d ="+time; } </스크립트>그런 다음 주요 ImageServlet이 이미지를 생성하는 방법을 살펴 보겠습니다.
<Servlet> <servlet-name> imagesVlet </servlet-name> <servlet-class> com.muke.imageServlet </servlet-class> </servlet> <servlet> <servlet-name> loginservlet </servlet-name> <servlet-class> com.muke.loginservlets </servletclass> <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>
이 검증 코드가 어떻게 구현되는지 더 생생하게 설명하려면, 하나의 단어 "Draw"는 첫 번째 방법과 비슷하지만 여전히 상대적으로 낮지 만 코드를 사용하여 검증 코드를 자동으로 "그리기"하는 효율성은 확실히 수많은 시간을 증가 시켰습니다. 위의 코드를 살펴 보겠습니다. 먼저, BufferedImage 객체 BI가 인스턴스화된다. BI는 검증 코드 사진을 그리는 데 사용됩니다. 그런 다음 BI를 사용하여 브러시 G를 얻고 G를 사용하여 엔티티의 직사각형 배경을 그립니다. 그런 다음 간단한 논리를 사용하여 Java에서 일반적으로 사용되는 DrawString () 메소드를 호출하여 사각형에 검증 코드 문자를 그립니다. 동시에 문자열은 STRINGBUFFER 변수 문자열 객체에 순서대로 추가되고 확인 코드를 제출 한 후 비교를 위해 JSP 내장 객체 세션에 저장됩니다. 확인 코드를 표시하려면 특정 이미지 형식으로 생성 된 검증 코드 이미지를 ImageIO 스트림에 작성해야합니다.
아래 Loginservlet에서 볼 수 있듯이 ImageserVlet에 저장된 문자열을 얻어 확인 코드 제출 상자의 문자열을 비교할 수 있습니다. 문자열을 소문자 또는 대문자로 변경하여 대문자를 무시할 수 있습니다.
공개 클래스 ImagesVlet은 httpservlet을 확장합니다 {public void doget (httpservletrequest 요청, httpservletreponse response)는 ioexception {bufferedimage bi = new bufferedimage (, bufferedimage.type_int_rgb); 그래픽 g = bi.getGraphics (); 색상 C = 새로운 색상 (,,); G. 세트 콜러 (c); G.FillRect (,,); char [] ch = "abcdefghijklmnopqrstuvwxyz".tochararray (); 랜덤 r = 새로운 랜덤 (); 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 Verification Code Production에 대한 관련 지식입니다. 나는 그것이 당신에게 도움이되기를 바랍니다! Java Verification Code Production (2 부)을 소개하겠습니다. 관심있는 친구, Wulin.com 웹 사이트에주의를 기울이십시오!