Artikel ini membagikan kode contoh yang dihasilkan oleh kode verifikasi Java untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
paket com.gonvan.component.captcha; impor java.awt.*; impor java.awt.image.bufferedimage; impor java.io.ioException; impor java.util.hashmap; impor java.util.map; import java.util.random; impor javax.imageio.imageio; import javax.servlet.servletoutputStream; import javax.servlet.http.httpservletrequest; impor javax.servlet.http.httpservletsponse; impor javax.servlet.htp.htp.htpspons; /*** Dibuat oleh Yuerzm pada 2016/3/14. */kelas publik captChafactory {private static final char [] code_cesterence = "abcdefghijklmnopqrstuvwxyz0123456789" .tochararray (); private static final int default_width = 60; private static final int default_height = 20; private static final int default_code_len = 4; private static final int default_code_x = 13; private static final int default_code_y = 16; private static final int default_font_size = 18; string final statis pribadi default_font_family = "Times New Roman"; instance captchafactory private static = captchafactory baru (); private int width = default_width; // Tentukan lebar int private int = default_height; // Tentukan panjang int private int private = default_code_len; // Tentukan jumlah kode verifikasi yang ditampilkan pada gambar private int xx = default_code_x; // Tentukan kode verifikasi x mengoordinasikan int yy = default_code_y; // Tentukan kode verifikasi y koordinat yang ditampilkan pada gambar private int fontSize = default_font_size; // Tentukan ukuran font kode verifikasi yang ditampilkan pada gambar private string fontFamily = default_font_family; // Tentukan jumlah kode verifikasi yang ditampilkan pada gambar private captchafactory () {} public static captChafactory getInstance () {return instance; } / ** * Mengkonfigurasi lebar dan tinggi * * @param w * @param h * @return * / captchafactory public ConfigWidThandHeight (int w, int h) {instance.width = w; instance.height = h; instance return; } / ** * Mengkonfigurasi koordinat * * @param x * @param y * @return * / captChafactory public ConfigXy (int x, int y) {instance.xx = x; instance.yy = y; instance return; } / ** * Mengkonfigurasi ukuran font * * @param fontSize * @return * / captchafactory public configFontSize (int fontsize) {instance.fontsize = fontsize; instance return; } / ** * Konfigurasikan font * * @param fontFamily * @return * / captchafactory public configFontSize (String fontFamily) {instance.fontFamily = fontFamily; instance return; } public void write (permintaan httpservletRequest, respons httpservletResponse) melempar ioException {// simpan kode verifikasi empat digit ke sesi tersebut. Peta captcha = menghasilkan (); String randomCode = (string) captcha.get ("captchacode"); BufferedImage buffimg = (bufferedImage) captcha.get ("captchaimg"); Httpsession sesi = request.getSession (); session.setAttribute ("kode", randomCode); // Caching gambar dilarang. response.setheader ("pragma", "no-cache"); response.setheader ("cache-control", "no-cache"); response.setDateheader ("kedaluwarsa", 0); response.setContentType ("Image/JPEG"); // keluaran gambar ke aliran output servlet. ServETOutputStream outputStream = response.getOutputStream (); Imageo.write (Buffimg, "JPEG", OutputStream); outputStream.close (); } peta publik <String, Object> Generate () melempar IoException {// Tentukan buffer gambar buffer BufferedImage bufimg = BufferedImage baru (lebar, tinggi, bufferedImage.type_int_rgb); Grafik gd = buffimg.getGraphics (); // Atur warna latar belakang GD.SetColor (GetRandColor (200, 250)); gd.fillrect (0, 0, lebar, tinggi); // Atur font, ukuran font harus ditentukan sesuai dengan ketinggian gambar. gd.setfont (font baru (fontFamily, font.plain, fontSize)); // Buat kelas generator bilangan acak acak acak = acak baru (); // Acak menghasilkan 40 baris interferensi, membuat kode otentikasi pada gambar yang lebih kecil kemungkinannya untuk dideteksi oleh program lain. GD.SetColor (GetRandColor (160, 200)); untuk (int i = 0; i <155; i ++) {int x = random.nextInt (lebar); int y = random.nextInt (tinggi); int xl = random.nextInt (12); int yl = random.nextInt (12); gd.drawline (x, y, x + xl, y + yl); } // RandomCode digunakan untuk menyimpan kode verifikasi yang dihasilkan secara acak sehingga pengguna dapat memverifikasi setelah masuk. StringBuffer RandomCode = New StringBuffer (); int red = 0, hijau = 0, biru = 0; // menghasilkan kode verifikasi panjang secara acak. untuk (int i = 0; i <panjang; i ++) {// Dapatkan nomor kode verifikasi yang dihasilkan secara acak. String code = string.ValueOf (code_Sequence [random.nextInt (36)]); // menghasilkan komponen warna acak untuk membangun nilai warna, sehingga nilai warna dari setiap output digit akan berbeda. merah = random.nextint (110); green = random.nextint (110); blue = random.nextint (110); // Gambar kode verifikasi ke dalam gambar dengan warna yang dihasilkan secara acak. gd.setColor (warna baru (merah + 20, hijau + 20, biru + 20)); gd.drawstring (kode, i * xx + 6, yy); // Gabungkan angka acak yang dihasilkan bersama -sama. randomCode.append (kode); } Peta <String, Object> retval = new HashMap <> (); retval.put ("captchacode", randomCode.toString ()); retval.put ("captchaimg", buffimg); kembali kembali; } / ** * Dapatkan warna acak yang diberikan rentang * * @param fc * min * @param bc * maksimum * @return warna * / warna pribadi getRandColor (int fc, int bc) {acak acak = acak baru (); 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); mengembalikan warna baru (r, g, b); }}Di atas adalah semua tentang artikel ini, saya harap ini akan membantu untuk pembelajaran semua orang.