Java는 검증 코드 확인 기능을 어떻게 구현합니까? 일상 생활에서 검증 코드는 어디에서나 볼 수 있으며, 어느 정도 계정 보안을 보호 할 수 있습니다. 그래서 그는 어떻게 그것을 달성 했습니까?
Java는 검증 코드 확인 기능을 매우 간단하게 구현합니다. 그래픽 클래스는 아트 보드에 문자를 그리는 데 사용되며, 특정 수의 문자를 무작위로 선택한 다음 무작위로 생성 한 다음 아르트 보드에서 여러 간섭 줄을 무작위로 생성합니다.
먼저, 검증 코드를 작성하여 도움말 클래스를 생성하는데, 이는 임의의 문자를 그리는 데 사용됩니다.
import java.awt.color; Java.awt.Font 가져 오기; java.awt.graphics 가져 오기; java.awt.image.bufferedimage import; import java.io.ioexception; import java.io.outputStream; java.util.random import; import javax.imageio.imageio; 공개 최종 클래스 GraphChelper { / ** * 생성 된 검증 코드를 문자열 형식으로 반환하고 동시에 이미지를 출력 * * @param width * 이미지의 너비 * @param 높이 * 이미지의 높이 * @param imgtype * 이미지 유형 * @param 출력 * 이미지 출력 스트림 (@param 출력 * 이미지 출력 스트림) * @Public String (strest) * / retated returedence returned retainted returnated vericate code ( @public code) *. int 너비, 최종 int 높이, 최종 문자열 imgtype, outputStream 출력) {StringBuffer sb = new StringBuffer (); 랜덤 random = new random (); BufferedImage image = 새로운 BufferedImage (너비, 높이, BufferedImage.type_int_rgb); 그래픽 그래픽 = image.getGraphics (); Graphic.setColor (color.getColor ( "f8f8f8")); graphic.fillRect (0, 0, 너비, 높이); 색상 [] 색상 = new color [] {color.blue, color.gray, color.green, color.red, color.black, color.orange, color.cyan}; // "Artboard"에서 간섭선을 생성합니다 (50은 (int i = 0; i <50; i ++) {graphic.setColor (colors [random.nextInt (colors.length)]); 최종 int x = random.nextint (width); 최종 int y = random.nextint (높이); 최종 int w = random.nextint (20); 최종 int h = random.nextint (20); 최종 int signa = random.nextBoolean ()? 1 : -1; 최종 INT SINB = Random.nextBoolean ()? 1 : -1; Graphic.Drawline (x, y, x + w * signa, y + h * signb); } // "artboard"graphic.setfont에 문자를 그립니다 (새 글꼴 ( "Comic Sans MS", font.bold, 30)); for (int i = 0; i <6; i ++) {final int temp = random.nextint (26)+97; 문자열 s = string.valueof ((char) temp); sb.append (들); graphic.setColor (colors [random.nextInt (colors.length)]); Graphic.DrawString (s, i * (너비 / 6), 높이 - (높이 / 3)); } graphic.dispose (); try {imageio.write (image, imgtype, output); } catch (ioexception e) {e.printstacktrace (); } return sb.toString (); }} 다음으로, 이미지 크기를 수정하고 확인 코드의 사용 시나리오를 처리하고 페이지에서 생성 된 확인 코드를 캡처하는 서블릿을 만듭니다 (캡처 된 QR 코드는 통과하기 전에 사용자가 입력 한 확인 코드와 일치합니다).
import java.io.ioexception; import java.io.outputStream; javax.servlet.servletexception import; javax.servlet.annotation.webservlet import; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsession; @webservlet (urlpatterns = "/verify/regist.do") public class verifyCodeServlet는 httpservlet {private static final long serialversionuid = 3398560501558431737L; @override protected void service (httpservletrequest request, httpservletresponse 응답) servletexception, ioexception {// 현재 요청에 해당하는 세션 객체를 가져옵니다 httpsession session = requestsession (); // 요청 (균일 자원 식별자)에서 URI를 가져옵니다. String uri = request.getRequesturi (); System.out.println ( "hello :" + uri); 최종 int 너비 = 180; // 사진 너비 최종 int 높이 = 40; // 사진 높이 최종 문자열 imgtype = "jpeg"; // 이미지 형식을 지정합니다 (MIME 유형을 참조하지 않음) 최종 출력 스트림 출력 = response.getOutputStream (); // 이미지를 클라이언트에 반환 할 수있는 출력 스트림을 가져옵니다 // (byte stream) // 확인 코드 사진을 작성하고 그림 문자열 코드에서 문자열을 반환합니다. System.out.println ( "검증 코드 내용 :" + 코드); // URI와 해당 확인 코드 간의 연관성을 만듭니다 (현재 세션 객체의 속성에 저장) 세션 .SetAttribute (URI, Code); System.out.println (session.getAttribute (uri)); }} 그런 다음 HTML 등록 페이지를 작성하여 확인하십시오.
<! docType html> <html> <head> <meta charset = "utf-8"> <title> register </title> <링크 rel = "스타일 시트"href = "Styles/General.css"> <link rel = "Stylesheet"href = "Styles/cell.css"> Stylesheet " href = "styles/form.css"> <script type = "text/javaScript"src = "js/ref.js"> </script> <style type = "text/css"> .Logo-container {margin-top : 50px; } .logo-container img {너비 : 100px; } .message-container {높이 : 80px; } .link-container {높이 : 40px; 라인 높이 : 40px; } .link-container a {text-decoration : none; . <div> <span> <i> </i> </span> <span> <i> </i> </span> </i> </i> </span> <span> <i> </i> </span> <span> <i> </i> </span> <span> <input type = "password"name = "placeholder ="placeholder = "placeholder ="PlaceHolder = 유형 = "비밀번호"이름 = "확인"자리 표시기 = "비밀번호 확인"> </span> </div> <div> <span> <입력 유형 = "text"name = "verifyCode"placeHolder = "verification code를 입력하십시오"> </span> <span style = "text -align :"> <img src = "/demo/verify/regist. </span> </div> <div style = "border : none;"> <span style = "text-align : left"> <input "value ="reset "value ="reset "> </span> <span style ="text-align; "> <입력 유형 ="value = "register"> </span> </div> <! </html>효과는 다음과 같습니다.
페이지를 클릭하면 확인 코드도 변경되지만 확인 코드를 명확하게 볼 수 없으면 확인 코드를 클릭하는 한 새로 고침됩니다. 이러한 방식으로 JavaScript를 사용하여 로컬 새로 고침을 달성 할 수 있습니다.
<img src = "/demo/verify/regist.do">에서 물음표와 접미사 번호를 추가하십시오. 새로 고침 될 때 접미사 번호가 계속 변경되도록하면 형성된 검증 코드도 계속 변경됩니다. 우리가 사용할 수있는 방법 중 하나는 접미사 번호를 날짜로 바꾸는 것입니다. 날짜는 현지 시간을 얻고 시간이 언제라도 변경되므로 언제든지 새로 고침 검증 코드가 변경 될 수 있습니다.
코드는 다음과 같습니다.
함수 myRefersh (e) {const source = e.src; // 원래 src //console.log에서 내용을 가져옵니다 ( "출처 :" + 소스); var index = source.indexof ( "?"); // 첫 번째 모양 위치를 찾습니다 (존재하지 않는 경우 -1) //console.log ( "index :" + index); if (index> -1) {// 발견되면? // 소스에서 인덱스 전에 컨텐츠를 가로 채기 (색인 및 인덱스 후 컨텐츠가 폐기) //console.log ( "s :" + s); var date = 새 날짜 (); // 날짜 인스턴스 생성 객체 var time = date.gettime (); // 날짜 객체의 새로 생성 된 인스턴스 에서이 시간에 해당하는 밀리 초 값을 가져옵니다 e.src = s + "? time =" + time; // src //console.log (e.src)의 꼬리 주소를 교체합니다. } else {var date = new Date (); e.src = source + "? time =" + date.gettime (); }}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.