이 기사에서는 참조에 대해 Java Verification Code에서 생성 한 예제 코드를 공유합니다. 특정 내용은 다음과 같습니다
패키지 com.gonvan.component.captcha; import java.awt.*; import java.awt.image.bufferedimage; import java.io.ioexception; import java.util.hashmap; import java.util.map; import java.util.random; import javax.imageio.imageio; import javax.servlet.servletoutputStream; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import javax.servlet.http.httpsessionsion; /*** 2016/3/14에 Yuerzm에 의해 만들어졌습니다. */public class captchafactory {private static final char [] code_sequence = "abcdefghijklmnopqrstuvwxyz0123456789".tochararray (); 개인 정적 최종 int default_width = 60; 비공개 정적 최종 int default_height = 20; 비공개 정적 최종 int default_code_len = 4; 비공개 정적 최종 int default_code_x = 13; 비공개 정적 최종 int default_code_y = 16; 비공개 정적 최종 int default_font_size = 18; 개인 정적 최종 문자열 default_font_family = "Times New Roman"; 개인 정적 CaptChafactory 인스턴스 = 새로운 Captchafactory (); 비공개 int 너비 = Default_width; // 너비를 정의합니다 int height = default_height; // 높이를 정의합니다 int 길이 = default_code_len; // 사진에 표시된 검증 코드 수를 정의합니다 int xx = default_code_x; // 확인 코드 정의 X 좌표 int yy = default_code_y; // 확인 코드 정의 y 사진에 표시된 좌표 private int fontsize = default_font_size; // 이미지에 표시된 검증 코드의 글꼴 크기를 정의하십시오. // 이미지에 표시된 검증 코드 수를 정의합니다. Private CaptChafactory () {} public static captchafactory getInstance () {return instance; } / ** * 너비와 높이 구성 * * @param w * @param h * @return * / public captchafactory configwidthandHeight (int w, int h) {instance.width = w; instance.height = h; 반환 인스턴스; } / ** * 좌표 구성 * * @param x * @param y * @return * / public captchafactory configxy (int x, int y) {instance.xx = x; 인스턴스 .yy = y; 반환 인스턴스; } / ** * 글꼴 크기 구성 * * @param fontsize * @return * / public captchafactory configfontsize (int fontsize) {instance.fontsize = fontsize; 반환 인스턴스; } / ** * font 구성 * * @param fontfamily * @return * / public captchafactory configfontsize (String fontFamily) {instance.fontFamily = fontFamily; 반환 인스턴스; } public void Writ map captcha = generate (); String RandomCode = (String) Captcha.get ( "Captchacode"); bufferedImage buffimg = (bufferedImage) captcha.get ( "captchaimg"); httpsession session = request.getSession (); session.setattribute ( "code", randomcode); // 이미지 캐싱은 금지됩니다. Response.SetHeader ( "Pragma", "No-Cache"); Response.SetHeader ( "Cache-Control", "No-Cache"); response.setDateHeader ( "만료", 0); Response.setContentType ( "image/jpeg"); // 이미지를 서블릿 출력 스트림에 출력합니다. servletoutputStream outputStream = response.getOutputStream (); imageio.write (buffimg, "jpeg", outputStream); outputStream.close (); } public map <string, object> generate ()는 ioexception {// 이미지 버퍼 버퍼 bufferedimage buffimg 정의 = 새로운 bufferedImage (너비, 높이, bufferedImage.type_int_rgb); 그래픽 gd = buffimg.getGraphics (); // 배경색 GD.SetColor를 설정합니다 (GetRandColor (200, 250)); gd.fillRect (0, 0, 너비, 높이); // 글꼴을 설정하면 글꼴의 크기는 그림의 높이에 따라 결정되어야합니다. GD.SetFont (New Font (fontfamily, font.plain, fontsize)); // 임의의 숫자 생성기 클래스 클래스 랜덤 = new random (); // 랜덤은 40 개의 간섭 줄을 생성하여 이미지의 인증 코드를 다른 프로그램에서 감지 할 가능성이 줄어 듭니다. Gd.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); gd. drawline (x, y, x + xl, y + yl); } // randomcode는 로그인 한 후 사용자가 확인할 수 있도록 무작위로 생성 된 검증 코드를 저장하는 데 사용됩니다. StringBuffer RandomCode = new StringBuffer (); int red = 0, green = 0, blue = 0; // 길이 검증 코드를 무작위로 생성합니다. for (int i = 0; i <length; i ++) {// 무작위로 생성 된 검증 코드 번호를 가져옵니다. 문자열 code = string.valueof (code_Sequence [random.nextInt (36)]); // 색상 값을 구성하기 위해 임의의 색상 구성 요소를 생성하여 각 숫자 출력의 색상 값이 다릅니다. red = random.nextint (110); green = random.nextint (110); blue = random.nextint (110); // 무작위로 생성 된 색상으로 확인 코드를 이미지에 그립니다. gd.setColor (새 색상 (빨간색 + 20, 녹색 + 20, 블루 + 20)); Gd.DrawString (코드, i * xx + 6, yy); // 생성 된 랜덤 숫자를 함께 결합합니다. randomcode.append (코드); } map <string, object> retval = new Hashmap <> (); retval.put ( "captchacode", randomcode.tostring ()); retval.put ( "captchaimg", buffimg); 반품 반환; } / ** * 범위가 주어진 임의의 색상을 얻습니다 * @param fc * min * @param bc * maximum * @return color * / private color 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); }}위의 내용은이 기사에 관한 모든 것입니다. 모든 사람의 학습에 도움이되기를 바랍니다.