Saya percaya semua orang akrab dengan kode verifikasi. Apakah Anda melamar akun atau masuk dalam beberapa kasus, Anda akan diminta untuk memasukkan kode verifikasi. Setelah statistik, probabilitas berhasil melewati kode verifikasi dalam satu verifikasi adalah 90%, yang tidak tinggi. Begitu banyak orang pasti akan meragukan perlunya desain ini yang mengurangi pengalaman pengguna, tetapi Hegel berkata: Segala sesuatu yang masuk akal adalah realistis; Segala sesuatu yang realistis itu rasional. Selanjutnya, mari kita pelajari tentang kode verifikasi.
Kode verifikasi adalah program otomatis sepenuhnya otomatis yang membedakan apakah pengguna adalah komputer atau seseorang. Ini digunakan untuk mencegah keretakan kata sandi berbahaya, menggesekkan tiket, dan banjir forum, dan mencegah peretas terus -menerus masuk melalui keretakan brute force. Ini digunakan di bank, komunitas, forum, sistem pemungutan suara, dll.
Tanpa basa -basi lagi, mari kita lihat empat cara yang saya tahu untuk mengimplementasikan kode verifikasi di Java.
Metode 1:
Metode pertama adalah hal pertama yang saya pikirkan, dan itu adalah logika implementasi paling sederhana, tetapi sangat efisien dan aman.
Operasi spesifiknya adalah: 1. Gunakan Photoshop untuk membuat gambar kode verifikasi. Gambaran persegi panjang mungkin memiliki huruf bahasa Inggris yang diperlukan, angka atau Cina (seperti di atas)
2. Tampilkan gambar di halaman kontrol ayunan atau JSP
3. Cocokkan string kode verifikasi yang sesuai untuk setiap gambar dalam kode
4. Saat mengirimkan, dapatkan string di kotak komponen atau teks dan string dari setiap gambar untuk membandingkannya dengan metode Equals ().
Kerugiannya adalah bahwa proses membuat gambar kode verifikasi terlalu memakan waktu, dan metode implementasinya sangat rendah, dan sangat disarankan untuk mengimplementasikannya dengan cara ini. Metode berikut akan menjadi lebih efisien, indah dan relatif aman.
Metode 2:
Di sini kita berbicara tentang Java Web dan implementasi kode verifikasi di bawah Servlet, dan logikanya masih sangat jelas.
Untuk menghilangkan kode implementasi yang lebih sederhana, mari kita mulai dengan kode kunci front-end:
Ketika kita mengklik "tidak dapat melihat dengan jelas", gambar kode verifikasi akan disegarkan, dan fungsi JS akan dipanggil untuk mengatur ulang jalur gambar untuk menggantikan gambar. Silakan lihat kode di bawah ini. Dalam kode, <%= request.getContextPath ()%> adalah untuk menyelesaikan masalah jalur relatif dan dapat mengembalikan jalur root situs. /Servlet/ImageServlet adalah keseluruhan, menunjuk ke servlet dari ImageServlet. Mengapa kita perlu menambahkan A /Servlet sebelumnya? Karena kami telah membuat pemetaan konfigurasi di web.xml, itu dapat dipahami sebagai mengubah nama yang lebih panjang. Kemudian lihat fungsi JS berikut. Beberapa orang mungkin memiliki pertanyaan, mengapa mendapatkan waktu saat ini dan menambahkannya ke ujung jalan? Bahkan, ini untuk menyelesaikan masalah cache browser. Ini adalah masalah bahwa gambar kode verifikasi telah diubah setelah ImageServlet dipicu, tetapi cache tidak berubah. Dengan bantuan waktu yang berbeda setiap saat, cache browser dapat dibatalkan.
<script type = "text/javascript"> function reloadcode () {var time = new date (). getTime (); document.geteLementById ("imagecode"). src = "< %= request.getContextPath () %>/servlet/firfigeservlet? D ="+waktu; } </script>Berikut adalah informasi konfigurasi utama di web.xml:
<script type = "text/javascript"> function reloadcode () {var time = new date (). getTime (); document.geteLementById ("imagecode"). src = "< %= request.getContextPath () %>/servlet/firfigeservlet? D ="+waktu; } </script>Lalu mari kita lihat bagaimana Key ImageServlet menghasilkan gambar:
<servlet> <servlet-name>ImageServlet</servlet-name> <servlet-class>com.muke.ImageServlet</servlet-class> </servlet> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>com.muke.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ImageServlet</servlet-name> <RURL-PATERS>/SERVLET/IMAGHTERVLET </RURL-PATERS> </Servlet-Mapping> <servlet-Mapping> <servlet-name> LogInservlet </servlet-name> <Rerl-pattern>/Servlet/LogInservlet </rerl-pattern> </servlet-Mapping>
Jika Anda ingin menggambarkan lebih jelas bagaimana kode verifikasi ini diimplementasikan, maka hanya satu kata "menggambar" suara yang mirip dengan metode pertama, dan masih relatif rendah, tetapi efisiensi menggunakan kode untuk secara otomatis "menggambar" kode verifikasi pasti meningkat berkali -kali. Mari kita lihat kode di atas. Pertama, objek BufferedImage BI dipakai. BI digunakan untuk menggambar gambar kode verifikasi. Kemudian, menggunakan BI untuk mendapatkan kuas G, dan menggunakan G untuk menggambar latar belakang persegi panjang entitas. Kemudian, menggunakan logika sederhana untuk memanggil metode dropstring () yang umum digunakan di java untuk menggambar karakter kode verifikasi pada persegi panjang. Pada saat yang sama, string ditambahkan ke objek string variabel StringBuffer secara berurutan, dan akhirnya disimpan dalam sesi objek bawaan JSP untuk perbandingan setelah mengirimkan kode verifikasi. Untuk menampilkan kode verifikasi, kita juga perlu menulis gambar kode verifikasi yang dihasilkan ke aliran ImageIO dalam format gambar tertentu.
Seperti yang dapat dilihat dari LogInservlet di bawah ini, Anda dapat membandingkan string di kotak pengiriman kode verifikasi dengan mendapatkan string yang baru saja disimpan di ImageServlet. Anda dapat mengubah string menjadi huruf kecil atau huruf besar untuk mengabaikan huruf besar.
Public Class ImageServlet memperluas httpservlet {public void doGet (permintaan httpservletRequest, httpservletResponse response) melempar ioException {bufferedImage bi = bufferedImage baru (,, bufferedimage.type_int_rgb); Grafik g = bi.getGraphics (); Warna c = warna baru (,,); g.setColor (c); g.fillrect (,,); char [] ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" .Tochararray (); Acak r = acak baru (); int len = ch.length, index; StringBuffer SB = StringBuffer baru (); untuk (int i =; i <; i ++) {index = r.nextInt (len); g.setColor (warna baru (r.nextint (), r.nextint (), r.nextint (), r.nextint ())); g.drawstring (ch [index]+"", (i*)+,); SB.Append (ch [index]); } request.getSession (). setAttribute ("piccode", sb.tostring ()); Imageo.write (BI, "JPG", Response.getoutputStream ()); }}Inilah legenda implementasinya:
Di atas adalah pengetahuan yang relevan tentang produksi kode verifikasi Java yang diperkenalkan kepada Anda oleh editor. Saya harap ini akan membantu Anda! Saya akan memperkenalkan kepada Anda produksi kode verifikasi Java (Bagian 2). Teman yang tertarik, harap perhatikan situs web Wulin.com!