Semua orang tahu kode verifikasi, dan saya tidak perlu mengatakan lebih banyak tentang fungsinya. Jika Anda tidak terlalu jelas, silakan merujuk penjelasan di Baidu Encyclopedia. Secara umum, generasi kode verifikasi adalah untuk secara acak menghasilkan karakter (angka, huruf, atau karakter Cina, dll.), Kemudian menggambar karakter yang dihasilkan ini ke dalam gambar, dan kemudian menambahkan beberapa elemen yang mengganggu pada gambar, seperti berbagai baris, dll. Oke, mari kita bicara omong kosong dan membacanya:
Halaman login sederhana (kode tidak lengkap, hanya bagian kode verifikasi)
<%@ page language = "java" import = "java.util.*" pageEncoding = "UTF-8"%> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en"> <html> <head> <head> <title> Kode verifikasi </title> <" Data-filtered = "Difiltered"> </span> <span style = "space putih: pre"> </span> // js fungsi untuk menyegarkan kode verifikasi <span style = "white-space: pre"> </span> function changeCode () {<span style = "white-space: pre"> </span> var imgnode = document.getelement: document.getelement: document.getelement: document.getelement (document. Document.getelement (document. <span style = "White-space: pre"> </span> // Muat ulang kode verifikasi untuk mencapai tujuan menyegarkan <span style = "White-space: pre"> </span> imgnode.src = "servlet/authimageServlet? t =" + math.random (); // Cegah masalah cache browser <span style = "white-space: pre"> </span>} </script> </head> <body> <form Action = "checkServlet" Method = "Post"> <label> Kode verifikasi input </label> <br/> <input type = "Text" name = "" RandomCode "/<pimg id =" viMg = "name" name = "randomCode"/<pimg id = "viMg =" "order" name = "randomcode"/<br label = "viMG =" name "; src = "servlet/authimageServlet"> <br/> <input type = "kirim" value = "kirim"> </form> </body> </html>Melalui session.getAttribute ("rand"), kode verifikasi yang dihasilkan diperoleh, dan kemudian dibandingkan dengan input pengguna, dan kemudian pemrosesan yang sesuai dilakukan berdasarkan hasil perbandingan.
Menghasilkan kode verifikasi melalui servlet:
paket com.util.servlet; impor java.awt.color; impor java.awt.font; impor java.awt.graphics; impor java.awt.image.bufferedimage; impor java.io.ioException; impor java.util.random; impor javax.imageio.imageio; impor javax.servlet.servletException; impor javax.servlet.http.httpservlet; impor javax.servlet.http.httpservletRequest; impor javax.servlet.http.httpservletResponse; impor javax.servlet.http.httpsession; AuthimageServlet kelas publik memperluas httpservlet {private static final string content_type = "text/html; charset = gb2312"; // Atur ukuran huruf, font pribadi mfont = font baru ("Times New Roman", font.plain, 17); public void init () melempar servletException {super.init (); } Warna 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); int b = fc+random.nextInt (bc-fc); mengembalikan warna baru (r, g, b); } public void service (permintaan httpservletRequest, respons httpservletResponse) melempar servletException, ioException {response.setHeader ("pragma", "no-cache"); response.setheader ("cache-control", "no-cache"); response.setDateheader ("kedaluwarsa", 0); // menunjukkan bahwa respons yang dihasilkan adalah respons gambar.setContentType ("Image/JPEG"); Lebar int = 100, tinggi = 18; BufferedImage Image = BufferedImage baru (lebar, tinggi, bufferedImage.type_int_rgb); Grafik g = image.getGraphics (); Acak acak = acak baru (); G.SetColor (GetRandColor (200.250)); g.fillrect (1, 1, lebar-1, tinggi-1); G.SetColor (warna baru (102.102.102)); G.Drawrect (0, 0, lebar-1, tinggi-1); g.setfont (mfont); G.SetColor (GetRandColor (160.200)); // Gambarlah garis acak untuk (int i = 0; i <155; i ++) {int x = random.nextInt (lebar - 1); int y = random.nextInt (tinggi - 1); int xl = random.nextInt (6) + 1; int yl = random.nextInt (12) + 1; G.Drawline (x, y, x + xl, y + yl); } // Gambar garis acak dari arah lain untuk (int i = 0; i <70; i ++) {int x = random.nextInt (lebar - 1); int y = random.nextInt (tinggi - 1); int xl = random.nextInt (12) + 1; int yl = random.nextInt (6) + 1; G.Drawline (x, y, x - xl, y - yl); } // menghasilkan angka acak dan mengonversi angka acak menjadi huruf string srand = ""; untuk (int i = 0; i <6; i ++) {int itmp = random.nextInt (26)+65; char ctmp = (char) itmp; srand += string.valueof (ctmp); g.setColor (warna baru (20+acak.nextint (110), 20+random.nextint (110), 20+acak.nextint (110))); G.DrawString (String.ValueOf (CTMP), 15*I+10,16); } Httpsession session = request.getSession (true); session.setAttribute ("rand", srand); g.dispose (); Imageo.write (gambar, "jpeg", response.getoutputStream ()); }}Informasi Konfigurasi Servlet di Web.xml:
<? Xml Version = "1.0" encoding = "UTF-8"?> <Web-app Versi = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http:/www.w3.org/2001 =" http:/www.w3.org/200 xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name> AuthimageServlet </servlet </servlet </servlet> <servlet-class> com.util.servlet.authimageServlet </servlet-class> </servlet> <servlet-papping> <servlet-name> authimageServlet </servlet-name> <roRR-pattern>/servlet/authimageServlet </rerl-pattern> </servlet-mething> <dreading-file> </Url-Pattern> </servlet-mapping> <dreading-file> </url-pola> </servlet-metping> <cread-file> </Url-Pattern./Servlet -papping> <dreading-file> </URL-POLAST. </web-app>
Dengan cara ini, fungsi kode verifikasi diimplementasikan, yang sangat sederhana dan praktis. Tentu saja, ada cara yang lebih indah dan ketat. Teman yang tertarik dapat belajar secara mendalam. Di sini saya akan berbagi dengan Anda dengan cara yang relatif sederhana. Semua dipersilakan untuk mengkritik dan mengoreksi saya.
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.