1. Proses Dasar:
Hasilkan halaman kode verifikasi (sangat kecil) → Embed ke dalam formulir → Klik untuk menyegarkan halaman → Verifikasi saat formulir dikirimkan.
2. Metode:
1. Tentukan Testaksi dan Menerapkan Metode Gambar
paket com.zhuguang.action; impor java.awt.color; impor java.awt.font; impor java.awt.graphics; impor java.awt.image.bufferedimage; impor java.util.map; impor javax.servlet.http.httpservletResponse; impor org.apache.struts2.interceptor.ServletResponseAware; impor org.apache.struts2.interceptor.Sessionaware; impor com.opensymphony.xwork2.actionsupport; impor com.sun.image.codec.jpeg.jpegcodec; impor com.sun.image.codec.jpeg.jpegimageencoder; Testaksi kelas publik memperluas ActionSupport mengimplementasikan sessionAware, servletResponseaware {private Map <String, Object> sesi; respons httpservletResponse pribadi; private static final long serialversionuid = 1L; Private String Chknumber; @Override Public String Execute () melempar Exception {response.setHeader ("cache-control", "no-cache"); Int Width = 50; // Lebar gambar Int tinggi = 20; // Image Height BufferedImage Image = BufferedImage baru (Lebar, Tinggi, BufferedImage.type_int_rgb); Grafik grafis = image.creategraphics (); graphics.setColor (this.getColor ()); // latar belakang grafis.fillrect (0, 0, lebar, tinggi); Graphics.setFont (font baru ("Arial", Font.Bold, 18)); graphics.setColor (this.getColor ()); // warna kata string number = string.ValueOf (System.CurrentTimeMillis ()%9000+1000); // Hasilkan empat bit bit bilangan acak session.put ("randomCode", angka); // Tulis ke sesi grafis.drawstring (angka, (int) (lebar*0.1), (int) (tinggi*0.8)); graphics.dispose (); JpegimageEncoder encoder = jpegcodec.createJpegencoder (response.getoutputStream ()); encoder.encode (gambar); response.getoutputStream (). flush (); // Segarkan ke halaman untuk menghasilkan respons gambar.getOutputStream (). Tutup (); // tutup penulis return null; } private color getColor () {int red = (int) (math.random ()*1000%256); int green = (int) (math.random ()*1000%256); int blue = (int) (math.random ()*1000%256); mengembalikan warna baru (merah, hijau, biru); } public string getchknumber () {return chknumber; } public void setchknumber (String chknumber) {this.chknumber = chknumber; } @Override public void setSession (peta <String, Object> sesi) {// TODO Metode yang dihasilkan secara otomatis Stub this.Session = sesi; } @Override public void setSession (peta <String, Object> sesi) {// TODO Metode yang dihasilkan secara otomatis Stub this.Session = sesi; } @Override public void setSerVletResponse (httpservletResponse response) {// TODO Metode yang dihasilkan secara otomatis Stub this.response = respons; }}Perhatikan penggunaan sesi dan tanggapan
2. Daftarkan dalam file struts.xml:
<Action name = "acakcode"> </action>
Tidak ada informasi yang dikembalikan, sehingga halaman tidak akan dialihkan
3. Penulisan Halaman JSSP
<%@ halaman bahasa = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <%@ taglib uri = "/struts-tags" prefix = "s"%> <%string path = request.getContextPath (); String basePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <! Doctype html public "-// w3c // dtd html 4.01 transisi // en" "http://www.w3.org/tr/html4/loose.dtd"> <html> <head> <meta http-quiv = "konten =" konten = "headset> <head> <meta http-equiv =" konten = "konten =" konten = "headset> <head> <meta http-quiv =" konten = "konten =" konten = "konten =" konten = "konten =" konten = "konten =" konten = "pext/htypevl; type = "text/javascript"> <!- function reloadcode (obj, base) {var rand = new date (). getTime (); // Waktu saat ini digunakan sebagai parameter ke URL untuk mengubah URL, sehingga kode verifikasi akan dimuat secara dinamis. // Ini hanya efek interferensi, tidak ada artinya, tetapi sangat pintar. Haha obj.src = base+"randomCode.action? Abc ="+rand; // Faktanya, tidak ada bidang ABC di sisi server. } //--> </script> <title> Test Page</title> </head> <body> <form action="testLogin" method="post"> Username<input type="text" name="name"><br> Password<input type="text" name="password"><br> Verification code: <input type="text" name="chknumber" id="chknumber" maxlength="4"> <img src = "<%= Basepath%> acakcode.action" id = "SafeCode" onClick = "ReloadCode (ini, '<%= Basepath%>')"/> <br> <input type = "kirim" value = "Loginin"> </form> </body> </html>4. Verifikasi
(1) Tambahkan metode verifikasi dalam tindakan
public string testLogin () {if (session.get ("randomCode"). Equals (chknumber)) {return Success; } else {return error; }}(2) Daftar di Struts.xml
<action name = "testlogin" method = "testlogin"> <result name = "success"> success.jsp </result> <result name = "error"> error.jsp </rence> </action>
Di atas adalah implementasi Struts2 yang diperkenalkan editor kepada Anda untuk menghasilkan kode verifikasi dinamis dan memverifikasi kode contoh. Saya harap ini akan membantu semua orang!