검증 코드의 원점
웹 프로젝트 개발에서 일부 사람들이 자동 등록기와 같은 자동 도구 (예 : 자동 등록기)를 사용하여 배치 데이터를 처리하지 못하도록하기 위해 검증 코드가 추가되어 자동 소프트웨어를 차단하는 효과를 달성하기 위해 다양한 기능 노드에서 검증됩니다.
가장 전형적인 응용 프로그램은 다음과 같습니다. 웹 사이트 등록 그래픽 검증 코드; 다음으로, Servlet과 결합 된 Java Technology를 통해 웹 사이트 등록에 필요한 그래픽 검증 코드 프로그램이 참조를 위해 구현됩니다.
2. 등록 페이지의 그래픽 검증 코드 효과 구현
1. 웹 프로젝트 생성 : java_servlet_verifyimg
2. 그래프 검증 코드를 자동으로 생성하는 컨트롤러 생성 - verifyimgservlet
package com.phome.util; import java.awt.color; import java.awt.font; import java.awt.graphics2d; import java.awt.image.bufferedimage; import java.io.ioexception; import java.util.random; import javax.servletexmence; javax.servlet.servletoutputStream; import javax.servlet.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import com.sun.mage.codec.jpegeg.jpegcodeg; com.sun.image.codec.jpeg.jpegimageencoder; public class veryifyimgservlet는 httpservlet { / ** * / private static final long serialversionuid = 1L; // 임의의 문자 사전을 설정합니다. 0, O, 1, I 등 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', ',', ',', ',', ', 'x', 'y', 'z'}; public static 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 응답)은 servletexception, ioexception {response.setContentType ( "image/jpeg"); // 출력 유형을 생략하지 않도록 설정 randomString = getRandomString (); // 무작위 문자열을 생성하여 무작위 문자열 요청을 생성하려면 메소드를 호출합니다. // 문자열을 세션 int width = 100에 저장합니다. // 이미지 너비 int 높이 = 30; // 이미지 높이 색상 색상 = GetRandomColor (); // 배경 색상 색상으로 임의의 색상을 가져옵니다. Reverse = GetReversecolor (색); // 전경 색상의 색상을 반전시킵니다. BufferedImage bi = 새로운 bufferedImage (너비, 높이, bufferedImage.type_int_rgb); // 색상 이미지 생성 그래픽 2d g = bi.creategraphics (); // 도면 객체를 가져옵니다. // font 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 (높이), 1, 1); // 랜덤 노이즈 포인트} servletoutputStream out = response.getOutputStream (); // 출력 스트림을 얻는 것 같습니다 jpegimageEncoder encoder = jpegcodec.createjpegencoder (out); // encoder encoder.encode (bi); // 이미지 인코딩 out.flush (); // 클라이언트로의 출력} public void dopost (httpservletrequest request, httpservletResponse 응답) servletexception, ioexception {this.doget (요청, 응답); }}3. 레지스터 컨트롤러 -registservlet을 만듭니다
package com.phome.servlet; import java.io.ioexception; import javax.servlet.servletexception; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.http.htervletr respont; Javax.servlet.http.http.httpervletresponse; 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, httpservletreponse resp) servletexception, ioexception {// 세션 httpsession session = req.getsession ()에서 등록 무작위 검증 코드를 가져옵니다. String RandomString = (String) session.getAttribute ( "RandomString"); // 사용자 입력 검증 코드를 받기 문자열 inputrandomString = req.getParameter ( "randomstr"); // 확인 코드가 전달되었는지 확인하고 등록 if (randomString.equals (inputrandomString)) {req.setattribute ( "resinfo", "축하! 등록이 성공했습니다!"); } else {req.setattribute ( "resinfo", "확인 코드가 잘못 입력되어 다시 확인하고 등록하십시오!"); } // 등록이 성공적이거나 실패한 경우 result.jsp 페이지로 이동하여 등록 결과를보십시오. . . req.getRequestDispatcher ( "result.jsp"). Forward (req, resp); }}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_3_0.xsd"3. ""webapp_ "" " <display-name> simg </display-name> <!-사용자 등록 서블릿-> <servlet> <servlet-name> registservlet </servlet-name> <servlet-class> com.phome.servlet.registservlet </servlet-class> <servlet-mapping> <servlet-name> registservlet </servlet-name> <Url-pattern> /regist.action </url-pattern> </servlet-mapping> <!-그래프 확인 코드 servlet 구성-> <servlet-name> verifyimg </servlet-name> <servlet-class> com.phome.servlet.verifyimgservlet </servlest class> <servletmapping> <servletmapping> <Servlet-name> verifyimg </servlet-name> <Url-pattern>/verifyimg.action </url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file> index.html </welcome-file> <welcome-file> index.htm </welcome-file> <welcome-file> index.jsp </file> <colite-file> default.html </welcome-file> <welcome-file> default.htm </welcome-file> <welcome-file> default.jsp </welcome-file> </welcome-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.getserverport ()+path+"; "-// w3c // dtml 4.01 과도기 // en"> <html> <head> <base href = "<%= basepath%>"rel = "external nofollow"rel = "external nofollow"> <title> my jsp 'index.jsp'시작 페이지 <meta http- equiv = "pragma" "jsp 'index.jsp'시작 페이지 <meta http- equiv = http-equiv = "Cache-control"content = "no-cache"> <meta http-equiv = "chewors"content = "0"> <meta http-equiv = "keyword ="keyword1, keyword2, keyword2, keyword3 "> <meta http-equiv ="descript "> <" "rel rel rele"> type = "text/css"href = "styles.css"rel = "외부 nofollow"rel = "외부 nofollow"> -> </head> <body> <form action = "$ {pageconext.request.conteppath}/regist.action"method = "post"> username : <input type = "ustom" "usenern" type = "text"name = "password"/> <br/> 등록하려면 검증 코드를 입력하십시오 : <img src = "$ {pagecontext.request.contextPath} /verifyimg.action"/> <입력 유형 = "text"name = "randomstr"/> <br/> <input type = "value ="regist "/</html>. 5.1 등록 결과를 만듭니다. -result.jsp
<%@ page language = "java"import = "java.util.*"pageEncoding = "gb18030"%> <%string path = request.getContextPath (); String BasePath = request.getScheme () : // "+request.getServerName ()+": "+request.getserverport ()+path+"; "-// w3c // dtml 4.01 과도기 // en"> <html> <head> <base href = "<%= basepath%>"rel = "external nofollow"rel = "external nofollow"> <title> my jsp 'index.jsp'시작 페이지 <meta http- equiv = "pragma" "jsp 'index.jsp'시작 페이지 <meta http- equiv = http-equiv = "Cache-control"content = "no-cache"> <meta http-equiv = "chewors"content = "0"> <meta http-equiv = "keyword ="keyword1, keyword2, keyword2, keyword3 "> <meta http-equiv ="descript "> <" "rel rel rele"> type = "text/css"href = "styles.css"rel = "외부 nofollow"rel = "외부 nofollow"> -> </head> <body> $ {requestscope.resinfo} </body> </html>6. 테스트
(1) a. 브라우저를 열고 테스트 주소를 입력하십시오. http : // localhost : 8080/java_servlet_verifyimg; 아래 그림에 표시된 페이지가 나타납니다
비. 등록 계정, 비밀번호 및 확인 코드를 입력하고 Regist를 클릭하여 제출하십시오.
기음. 테스트 결과, 이체 등록 페이지로 이동하여 등록이 성공했다고 촉구합니다.
(2) 등록 페이지를 엽니 다
오류 등록 코드를 입력하십시오
테스트 결과 페이지
위에!
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.