1. Grundprozess:
Generieren Sie eine Überprüfungscode -Seite (sehr klein) → in das Formular → Klicken, um die Seite zu aktualisieren. → Überprüfen Sie, wann das Formular eingereicht wird.
2. Methode:
1. Definieren Sie die Testaktion und implementieren Sie Zeichnungsmethoden
Paket com.zhuguang.Action; Import Java.awt.Color; import Java.awt.font; importieren java.awt.graphics; Import Java.awt.image.BuffenedImage; import Java.util.map; importieren javax.servlet.http.httpServletResponse; import org.apache.struts2.Interceptor.servletresponseaware; import org.apache.struts2.Interceptor.sessionAware; import com.opensymphony.xwork2.actionsupport; import com.sun.image.codec.jpeg.jpegcodec; import com.sun.image.codec.jpeg.jpegimageCoder; öffentliche Klassen -TestAktion erweitert ActionVorts -implementiert SessionAWare, ServletResponseaware {private map <String, Objekt> Sitzung; private httpServletResponse -Antwort; private statische endgültige lange Serialversionuid = 1L; private String Chnumber; @Override public String execute () löst Ausnahme aus {response.setheader ("cache-control", "no-cache"); int width = 50; // Bildbreite int Höhe = 20; // Bildhöhe Bufferedimage Image = new bufferedImage (Breite, Höhe, bufferedimage.type_int_rgb); Graphics Graphics = Image.CreateGraphics (); Graphics.setColor (this.getColor ()); // Hintergrundfarbe Graphics.FillRect (0, 0, Breite, Höhe); Graphics.SetFont (neue Schriftart ("Arial", font.bold, 18)); Graphics.setColor (this.getColor ()); // die Farbe der Wort string nummer = string.valueof (System.currentTimemillis ()%9000+1000); // generieren Sie die Sitzung von vier Bit-Zufallszahlen.put ("RandomCode", Nummer); // in die Sitzungsgrafik schreiben. Graphics.Disis (); JpegimageCoder cccoder = jpegcodec.createjpeGenCoder (response.getOutputStream ()); ccoder.encode (Bild); response.getOutputStream (). Flush (); // Aktualisieren Sie zur Seite, um Bildantwort zu generieren.getOutputStream (). Close (); // Close Writer Return Null; } private Farbe getColor () {int rot = (int) (math.random ()*1000%256); int green = (int) (math.random ()*1000%256); int blue = (int) (math.random ()*1000%256); Neue Farbe zurückgeben (rot, grün, blau); } public String getChknumber () {return chknumber; } public void setChKnumber (String Chnumber) {this.chknumber = chknumber; } @Override public void setSession (MAP <String, Objekt> Sitzung) {// Todo automatisch generierte Methode Stub This.Session = Session; } @Override public void setSession (MAP <String, Objekt> Sitzung) {// Todo automatisch generierte Methode Stub This.Session = Session; } @Override public void setServletResponse (httpServletResponse-Antwort) {// Todo automatisch generierte Methode Stub this.Response = Antwort; }}Achten Sie auf die Verwendung von Sitzung und Antwort
2. Registrieren Sie sich in der Datei struts.xml:
<action name = "randomCode"> </action>
Es werden keine Informationen zurückgegeben, so dass die Seite nicht umgeleitet wird
3. JSSP -Seite Schreiben
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "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 transitional // en" "http://www.w3.org/tr/html4/loose.dtd" charSet = utf-8 "> <script type =" text/javaScript "> <!-Funktion reloadCode (obj, base) {var rand = new Date (). GetTime (); // Die aktuelle Zeit wird als Parameter für die URL verwendet, um die URL zu ändern, so dass der Verifizierungscode dynamisch geladen wird. // Es ist nur ein Interferenzeffekt, es hat keine Bedeutung, aber es ist sehr klug. Haha obj.src = base+"randomcode.action? Abc ="+rand; // In der Tat gibt es kein ABC -Feld auf der Serverseite. } //-> </script> <title> Testseite </title> </head> <body> <Form Action = "testlogin" methode = "post"> userername <Eingabe type = "text" name = "name"> <br> password <Eingabe type = "text" name "name =" kennwort " src = "<%= Basepath%> randomCode.Action" id = "safecode" onclick = "reloadCode (this, '<%= Basepath%>')"/> <br> <Eingabe type = "subine" value = "loginin"> </body> </body> </html>4. Überprüfung
(1) Fügen Sie eine Verifizierungsmethode in Aktion hinzu
public String testlogin () {if (Session.get ("randomCode"). Equals (Chnumber)) {return Erfolg; } else {Rückgabefehler; }}(2) Registrieren Sie sich in Struts.xml
<actionname = "testlogin" methode = "testlogin"> <result name = "success"> scurn
Das obige ist die Struts2 -Implementierung, die der Editor Ihnen zur Generierung dynamischer Überprüfungscodes vorgestellt und den Beispielcode verifiziert. Ich hoffe, es wird für alle hilfreich sein!