이 기사에서는 참조에 대한 Javaweb 로그인 검증 코드의 특정 코드를 공유했습니다. 특정 내용은 다음과 같습니다
사용:
컨트롤러 : 검증 코드를 생성합니다
@requestmapping ( "/user/check.jpg") public void createcode (httpservletrequest 요청, httpservletResponse 응답)는 ioexception {// 브라우저를 캐시 응답에 알리지 않음 ( "expires", "-1"); Response.SetHeader ( "Cache-Control", "No-Cache"); 응답 .Setheader ( "Pragma", "-1"); captchautil util = captchautil.instance (); // 검증 코드를 세션에 입력하여 문자열 코드를 확인하십시오 = util.getString (); request.getSession (). setAttribute ( "code", code); // 웹 페이지 vageio.write (util.getImage (), "jpg", response.getOutputStream ()); } JSP : 검증 코드 표시
<img id = "img"src = "<%= basepath%> user/check.jpg"onclick = "refresh ()">
function refresh () {var url = $ ( "#basepath"). val () + "user/check.jpg? number =" + math.random (); $ ( "#img"). attr ( "src", url); } 확인하다:
세션의 코드가 전경에서 다시 전송 된 코드와 일치하는지 여부
/ ** * 검증 코드 확인 * * @param session * @param code */ private void checkcode (httpsession 세션, 문자열 코드) {문자열 codesession = (string) session.getAttribute ( "code"); if (stringUtils.isempty (codesession)) {log.error ( "확인 코드 정보가 생성되지 않았다"); New ImperalstateException ( "err-01000")을 던지십시오. } if (stringUtils.isempty (code)) {log.error ( "검증 코드 정보가 채워지지 않았다"); 새로운 BusinessException ( "err-06018"); } if (codesession.equalsEndoreCase (code)) {// 확인 코드가 전달됩니다} else {log.error ( "확인 코드 오류"); 새로운 BusinessException ( "ERR-06019"); }} 도구 :
import java.awt.color; Java.awt.Font 가져 오기; java.awt.graphics 가져 오기; java.awt.image.bufferedimage import; java.util.random import; / ** * 검증 코드 생성 도구 * @Author hxl * */ public class captchautil {private bufferedImage image; // image private string str; // 검증 코드 개인 정적 숯 코드 [] = "abcdefghijklmmnopqrstuvwxyzabcdefghijklmnopqrstuvyz123456789". 공개 정적 최종 문자열 세션 _code_name = "코드"; private captchautil () {init (); // 초기화 속성}/*** randomnumutil instance get get randomnumutil instance*/ public static captchautil instance () {return new captchautil (); } /** 검증 코드 그림* / public bufferedImage getImage () {return this.image; } /** 이미지* / public string getString () {return this.str; } private void init () {// 이미지 생성 int width = 85, height = 20; BufferedImage image = 새로운 BufferedImage (너비, 높이, BufferedImage.type_int_rgb); // 그래픽 컨텍스트 가져 오기 그래픽 g = image.getGraphics (); // 랜덤 랜덤 생성 = new random (); // 배경색 설정 G.SetColor (GetRandColor (200, 250)); G.FillRect (0, 0, 너비, 높이); // 글꼴 G.SetFont를 설정합니다 (New Font ( "Times New Roman", Font.Plain, 18)); // 155 간섭선을 무작위로 생성하여 이미지의 인증 코드를 다른 프로그램 G.SetColor (getRandColor (160, 200))에 의해 감지 할 가능성이 적습니다. for (int i = 0; i <155; i ++) {int x = random.nextint (width); int y = random.nextInt (높이); int xl = random.nextint (12); int yl = random.nextint (12); G.DrawLine (X, Y, X + XL, Y + YL); } // 무작위로 생성 된 인증 코드 (4 자리 번호) String srand = ""; for (int i = 0; i <4; i ++) {string rand = string.valueof (code [random.nextint (code.length)]); srand += rand; // 이미지 G.SetColor (새 색상 (20 + random.nextInt (110), 20 + random.nextInt (110))에 인증 코드를 표시합니다. // 호출 함수의 색상은 씨앗이 너무 가깝기 때문에 동일하므로 G.DrawString (rand, 13 * i + 6, 16) 만 직접 생성 할 수 있습니다. } // 할당 확인 코드 this.str = srand; // 이미지가 적용됩니다 g.dispose (); // bytearrayinputStream input = null; // BYTEARRAYOUTPUTSTREAM 출력 = 새로운 BYTEARRAYOUTPUTSTREAM (); // try {// imageOutputStream imageOut = imageIO.createImageOutputStream (output); // imageio.write (image, "jpeg", imageOut); // imageOut.close (); // input = new BytearRayInputStream (output.tobytearRay ()); //} catch (예외 e) {// system.out.println ( "확인 코드 이미지가 생성 될 때 오류가 발생했습니다." + e.tostring ()); //} // this.image = input this.image = image;/* 지정된 범위에 대해 임의의 색상을 가져옵니다*/ 개인 색상 getRandColor (int fc, int bc) {random random = new Random (); IF (FC> 255) FC = 255; IF (BC> 255) BC = 255; int r = fc + random.nextint (bc -fc); int g = fc + random.nextint (bc -fc); int b = fc + random.nextint (bc -fc); 새로운 색을 반환합니다 (R, G, B); }} 마지막으로 설명해 보겠습니다. 로그인 인터셉터는 검증 코드를 생성하기 위해 경로를 해제해야합니다! 로그인 인터셉터는 검증 코드를 생성하기위한 경로를 해제해야합니다! ! 로그인 인터셉터는 검증 코드를 생성하기위한 경로를 해제해야합니다! ! ! 중요한 말을 세 번 말하십시오 ~~
마지막 디스플레이 :
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.