Contoh ini membagikan kode spesifik Java kode verifikasi yang dihasilkan secara acak untuk referensi Anda. Konten spesifiknya adalah sebagai berikut
Impor java.awt.color; impor java.awt.font; impor java.awt.graphics2d; impor java.awt.image.bufferedimage; impor java.io.io -exception; impor java.util.random; impor javax.imageo.imageio; impor java.util; javax.servlet.servletoutputStream; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletRequest; impor javax.servlet.htp.httpservletResponse; impor javax.servlet Httpservlet {/ *** konstruktor objek.*/ Public randImage () {super (); } private int imgwidth = 0; // Lebar Gambar Private int imgheight = 0; // Image Height Private Int Codecount = 0; // Jumlah karakter dalam gambar private int x = 0; Private int fontheight; // ketinggian font private int codey; Private String FontStyle; // Font Style // ID Serialisasi Hindari Duplikat Private Static Final Long SerialVersionuid = 128554012633034503L; /*** Parameter konfigurasi inisialisasi*/public void init () melempar servletException {// lebar string strwidth = "200"; // string tinggi strheight = "80"; // jumlah karakter string strcodecount = "5"; // font fontstyle = "Times New Roman"; // Konversi informasi yang dikonfigurasi menjadi numerik coba {if (strwidth! = Null && strwidth.length ()! = 0) {imgwidth = integer.partseint (strwidth); } if (strheight! = null && strheight.length ()! = 0) {imgheight = integer.parseint (strheight); } if (strcodecount! = null && strcodecount.length ()! = 0) {codecount = integer.parseint (strcodecount); }} catch (NumberFormateException e) {E.PrintStackTrace (); } x = imgwidth / (codecount + 1); // spasi karakter fontheight = imgheight - 2; // font tinggi codey = imgheight - 12; // Kode Tinggi} Proses ProsesRequest yang dilindungi (Permintaan HttpservletRequest, respons httpservletResponse) melempar servletException, ioException {// output stream set response.setContentType ("Image/JPEG"); // format output respons.setHeader ("pragma", "no-cache"); // No Cache Regenerate Response.SetHeader ("Cache-Control", "No-Cache"); // tidak ada cache yang meregenerasi respons.setDateheader ("kedaluwarsa", 0); // Tidak ada pembatalan cache juga tidak di -cache httpsession sesi = request.getSession (); // Dapatkan sesi sesi // Buat gambar di memori bufferedImage Image = BufferedImage baru (imgwidth, imgheight, bufferedImage.type_int_rgb); // Dapatkan konteks grafis grafis2d g = image.creategraphics (); // menghasilkan acak acak acak = acak baru (); // kelas acak // atur warna latar belakang persegi panjang g.setColor (color.white); // Isi Rectangle Rect ke White G.Fillrect (0, 0, imgwidth, imgheight); // atur font border g.setfont (font baru (fontstyle, font.plain + font.italic, fontheight)); // atur warna perbatasan g.setColor (warna baru (55, 55, 12)); // Gambarlah perbatasan G.Drawrect (0, 0, Imgwidth - 1, Imgheight - 1); // menghasilkan 160 baris interferensi secara acak, membuat kode otentikasi pada gambar yang tidak mudah dideteksi oleh program lain G.SetColor (GetRandColor (160, 200)); untuk (int i = 0; i <160; i ++) {int x = random.nextInt (imgwidth); int y = random.nextInt (imgheight); int xl = random.nextInt (12); int yl = random.nextInt (12); G.Drawline (x, y, x + xl, y + yl); } // Ambil kode otentikasi yang dihasilkan secara acak (nomor 4 digit) string srand = ""; int red = 0, hijau = 0, biru = 0; untuk (int i = 0; i <codecount; i ++) {// Ubah untuk menghasilkan karakter acak codecount // cerita warna baru melalui rgb tiga warna merah = acak.nextint (255); green = random.nextint (255); blue = random.nextint (255); // cerita untuk mendapatkan sejumlah 0 1 2 int wordtype = random.nextint (3); // cerita untuk mendapatkan 3 angka antara 0-2 char retword = 0; // 0 nomor 1 huruf kecil 2 sakelar huruf modal (wordtype) {case 0: retword = this.getSingLeNumberCharCharchar (); // Dapatkan istirahat tipe char 0-9; Kasus 1: retsword = this.getLowerOrupPerchar (0); // Dapatkan istirahat tipe karakter kecil; Kasus 2: retsword = this.getLowerOrupphar (1); // Dapatkan istirahat tipe char huruf besar; } srand += string.ValueOf (retsword); // Dapatkan karakter acak yang diperoleh g.setColor (warna baru (merah, hijau, biru)); // atur warna g.drawstring (string.valueof (retrword), 2+ (i) * x, codey); // Tulis karakter ke posisi yang sesuai dalam gambar} // simpan kode otentikasi di session session.setAttribute ("rand", srand); // Simpan karakter acak yang diperoleh ke dalam balasan sesi, dan Anda dapat menelepon // gambar mulai berlaku g.dispose (); // Lepaskan objek G serveLeTutputStream responseOutputStream = response.getOutputStream (); // Output Stream // Output Image ke halaman gambaro.write (gambar, "jpeg", responseOutputStream); // Output dalam format JPEG // Tutup aliran input di bawah ini! responseOutputStream.flush (); // segar dan tutup stream responseOutputStream.close (); } Warna getRandColor (int fc, int bc) {// berikan warna 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); } Protected void doGet (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {ProcessRequest (permintaan, respons); } Dopost void yang dilindungi (permintaan httpservletRequest, respons httpservletResponse) melempar ServletException, ioException {ProcessRequest (Request, Response); } // Konversi nomor acak integer ke char untuk mengembalikan char pribadi getsinglenumberchar () {acak acak = acak baru (); int numberResult = random.nextInt (10); int ret = numberResult + 48; // Saat mengonversi karakter '0' menjadi kode ascall, itu adalah 48 return (char) ret; } // Dapatkan 26 karakter private char getLowerOrupPlar (int atas) {acak acak = acak baru (); int numberResult = random.nextInt (26); int ret = 0; if (atas == 0) {// ret kecil = numberResult + 97; } lain jika (atas == 1) {// modal ret = numberResult + 65; } return (char) ret; }} Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.