1. Vorwort
1.1. Was ist die Eingabeüberprüfung? Warum muss ich Bestätigung eingeben?
Im vorherigen Artikel haben wir über die Konvertierung des Datentyps erfahren. Wir haben zwei Methoden zur Verarbeitung von Präsentationsschichtdaten erwähnt. Wir haben auch erwähnt, dass die Eingabedaten der Benutzer eingeben müssen, um die gewünschten Daten zu erhalten. Wie bestimmen wir also, dass die Daten nach dem Typenkonvertierung die gewünschten Daten sind? Es ist hier ein bisschen durchquert. Sie können es so vorstellen: Ein erwachsener Mann ist 18 Jahre alt, und Sie möchten jetzt die Daten von 18 erhalten, aber der Benutzer gibt 32 ein. Es ist auch richtig, sie durch den Typ zu konvertieren, aber die Daten sind nicht das, was Sie wollen. Was sollen wir zu diesem Zeitpunkt tun? Die Eingabeüberprüfung ist also hier nützlich.
Die Beziehung zwischen Typumwandlung und Eingabeüberprüfung ist: Typumwandlung ist die Voraussetzung für die Eingabeüberprüfung. Wenn beide Typ -Conversions falsch sind, müssen keine Eingangsüberprüfung durchgeführt werden. Oft werden die Typ -Konvertierung und die Eingangsprüfung gleichzeitig durchgeführt.
Es gibt zwei Arten der Eingabeüberprüfung:
1. Kundenüberprüfung;
2. serverseitige Überprüfung. Was wir hier hauptsächlich erklären, ist die serverseitige Überprüfung (Schreiben Sie Valatexxx-Methode und XML-Konfigurationsdateiüberprüfung)
1.2. Überprüfungsprozess der Umschreibung der Validatexxx -Methode
1. Der Typumwandler ist für die Typumwandlung der Anforderungsparameter der Zeichenfolge verantwortlich und setzen diese Werte auf die Eigenschaftswerte der Aktion.
2. Eine Ausnahme kann während der Ausführung der Typumwandlung auftreten. Wenn eine Ausnahme eintritt, werden die Ausnahmeinformationen automatisch im ActionContext gespeichert. Der ConversionError -Interceptor ist dafür verantwortlich, ihn in einen Fielderror einzudämmen.
3. Aufrufen Validatexxx () Methode durch Reflexion, wobei XXX der Methodenname ist, der der Verarbeitungslogik entspricht, die die Benutzeranforderung verarbeitet.
4. Rufen Sie die Validierungsmethode der Aktionsklasse auf
5. Wenn die obigen Schritte keinen Fielderror anzeigen, wird die Verarbeitungsmethode zur Verarbeitung von Benutzeranforderungen in der Aktion aufgerufen. Wenn ein Fielderror angezeigt wird, wechselt das System in die in der logische Eingabeansicht angegebene Ansicht.
2. Eingangsprüfung
2.1. Hier gibt es zwei Möglichkeiten, die Überprüfung einzugeben:
1. Schreiben Sie die Validierungsmethode neu oder passen Sie die Validatexxx -Methode an (wobei XXX der von Ihnen definierte Name ist. Die Methode wird zuerst ausgeführt und die Validierungsmethode wird ausgeführt).
2. Erstellen Sie eine neue XML zur Überprüfung
2.2. Schreiben Sie die Validierungsmethode neu
Im MVC -Framework wird ein standardisierter Teil der Datenüberprüfung bereitgestellt. Struts2 bietet hier eine Validierungsmethode. Wir können die Validierungsmethode neu schreiben, um die Eingangsüberprüfung durchzuführen. Es gibt jedoch zwei Punkte über das Umschreiben der Validierungsmethode: 1. Die Validierungsmethode wird vor der Ausführungsmethode ausgeführt; 2. Die Validierungsmethode führt Überprüfungsregeln für alle Aktionen aus. Um eine bestimmte Aktion zu unterscheiden, können wir die Valatexxx -Methode verwenden.
Hinweis: Die folgenden Beispiele sind Beispiele für die lokale Konvertierung und Eingabevalidierung.
Einfacher Beispiel für die Registrierungsüberprüfung:
Erstellen Sie einen neuen Benutzer der Entitätsklasse:
Benutzer
Erstellen Sie eine neue Ansicht: Register.jsp
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> <%@ taglib uri = "/struts-tags" prefix = "s"%> <! docType html public "-////// // //. Dtd HTM. "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Registered user</title></head><body> <h2>Verify using validateXXX() method</h2> <form Action = "Register_Test"> Benutzer: <Eingabe type = "text" name = "user"> <br/> Passwort: <Eingabe type = "password" name = "user"> <br/> Passwort: <Eingabe type = "password" name = "user"> <br/> <Eingabe type = "value =" value "> </form> </body> </html> </html> </html> </html>
Erstellen
Paket com.validatexxx; import com.opensymphony.xwork2.actionsupport; // schreibe validate () und valatexxx angegebene Methoden zur Überprüfung/ * * In Struts.xml wird die Methode validatetest () -Methode zunächst bezeichnet, und dann wird die Testmethode bezeichnet. public user getUser () {zurücksenden Benutzer; } public void setUser (Benutzer Benutzer) {this.user = user; } // 2 @Override public void validate () {System.out.println ("Validate -Methode neu schreiben"); if (null == user.getPassword () || "" .Equals (user.getPassword ()) || null == user.getRepassword () || "" .Equals (user.getRepassword ())) {this.addFielderror ("Repassword", "Repassword sollte das gleiche Passwort sein"); zurückkehren; } if (! user.getPassword (). Equals (user.getRepassword ())) {// Wenn Daten im Fielderror existieren, springt der Server automatisch zur logischen Ansicht der Eingabe this.addfielderror ("Repassword", "Repassword sollte das gleiche Passwort sein"). }} // 1 public void validatetest () {System.out.println ("benutzerdefinierte Verifizierungsmethode: validatetest"); } // 3 public String test () {System.out.println ("Test: Methode"); Erfolgserfolg; }}Hinweis: Die Eigenschaft hier ist der Benutzer, daher muss der Name Ihres JSP -Seitenparameters als Name des Instanzbenutzer
Erstellen Sie eine neue Struts.xml und speichern
HINWEIS: Die Methode hier muss nach Ihrer Valudatexxx () -Methode definiert werden. Hier ist der Test. Wenn Sie * *verwenden, muss Structs2 auch strikt-Methoden-Invocation = "False" konfigurieren. Es wird gesagt, dass die Sicherheit erhöht wurde und alle hinzugefügt werden müssen, um * zu verwenden *
Erstellen Sie eine neue UserTypeConverter -Klasse, um StrudstypeConverter zu erben (erstellen Sie einen Typkonverter).
Paket com.validatexxx; import Java.util.map; import org.apache.struts System.out.println ("userTypeConverter: Typ Conversion!"); User user = new user (); user.setUserName (arg1 [0]); user.setPassword (arg1 [1]); user.setRepassword (arg1 [2]); Benutzer zurückgeben; } @Override public String convertToString (MAP arg0, Object arg1) {Benutzer u = (Benutzer) arg1; return U.GetUserName ()+"!"; }}Hinweis: Nachdem der Konverter dieses Typs erstellt wurde, müssen Sie eine neue RegisterActraction-Conversion.Properties erstellen und in das gleiche Verzeichnis platzieren.
Der Inhalt dieser Datei ist:
Der erste ist der Eigenschaftsname, den Sie in der Registrierung befinden, gefolgt vom spezifischen Pfad zum Typumwandler.
Erstellen Sie eine neue Erfolgsansicht: Success.jsp
Success.jsp
Erstellen Sie eine neue Fehleransicht: input.jsp
input.jsp
Die Auswirkung erfolgreicher Codeausführung ist wie folgt:
Register.jsp Seite
Die Seite, die erfolgreich sprang, ist: Success.jsp
Die Konsolen -Testergebnisse lauten:
Die Daten springen zur Konvertierung der TypeTypeConverter, dann in die Registrierung, führen Sie die validierte Methode () aus, validieren Sie und geben dann den Erfolg zurück und führen Sie dann die Ergebnisansicht aus.
Schauen wir uns die Reihenfolge an, in der der Code fehlschlägt:
Register.jsp Seite
input.jsp Seite
Konsole -Testeffekt:
In der Validierungsmethode lautet der Code des Autors: this.addfielderror (). Wie bereits erwähnt, hilft uns der Server automatisch, zur falschen Schnittstelle zu springen, wenn ein Fehler hinzugefügt wird. Es wird die Eingabe zurückgegeben, und die Eingabe ist in Struts.xml konfiguriert und kehrt zur Schnittstelle input.jsp zurück.
2.3. Erstellen Sie neue XML zur Eingabeüberprüfung
Erstellen Sie eine neue Ansichtschnittstelle: test.jsp
<%@ page Language = "java" contentType = "text/html; charset = utf-8" pageCoding = "utf-8"%> <%@ taglib uri = "/struts-tags" prefix = "s"%> <! docType html public "-////// // //. Dtd HTM. "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Use XML verification</title></head><body> <s:form action="empinfo" method="post"> <s: textfield name = "name" label = "name" size = "20" /> <s: textfield name = "age" label = "ay" size = "20" /> <s: subieren name = "subly" label = "subieren" align = "center" /> < /s: Form> < /body> < /html>
Erstellen Sie eine neue Mitarbeiterklasse, um die ActionVort -Support zu erben
Diese Klasse verwendet die Override Validate -Methode und die XML -Konfiguration. Wir können eine davon zur Überprüfung auswählen
Paket com.Validatexxx; import com.opensymphony.xwork2.actionsupport; // Validate () -Methode verwenden, um zu überprüfen, dass dies die serverseitige Überprüfung ist! Der Mitarbeiter der öffentlichen Klasse erweitert die AktionSverpackung {private String -Name; privates int Alter; public String getName () {return name; } public void setName (String -Name) {this.name = name; } public int getage () {return ay; } public void setage (int age) {this.age = älter; } // Der zweite Schritt führt diese Methode aus, die public String execute () {System.out.println ("execute:"+this.age); Erfolgserfolg; }/* Überprüfung mithilfe der Serverseite: Schreiben Sie die Validate -Methode () neu; // Der erste Schritt besteht darin, die Methode auszuführen. public void validate () {System.out.println ("validate"); if (name == null || name.trim (). Equals ("")) {// Wenn Daten zu dieser Methode hinzugefügt werden, gibt der Server die Eingabe zurück und springt dann zur Seite input.jsp. AddFielderror ("Name", "Der Name ist erforderlich"); } if (Alter <28 || Alter> 65) {AddFielderror ("Alter", "Alter muss zwischen 28 und 65" liegen); }}*/}Konfigurieren Sie in Struts.xml:
Der Success.jsp und input.jsp hier verwenden immer noch die oben genannten.
Danach müssen wir eine neue Mitarbeiter-Validation.xml erstellen und den Weg in das gleiche Verzeichnis wie Mitarbeiter platzieren. Hinweis: -Validation.xml ist fest und unverändert.
Inhalt sind:
<? <nachricht> Der Name ist erforderlich. </message> </field-validator> </field> <field name = "ay"> <field-Validator type = "int"> <param name = "min"> 29 </param> <param name = "max"> 64 </param> <meldungen
Schlüsselpunkt: Die DTD -Grenze dieser Datei muss sein, andernfalls der Rückgabefehler:
Fehler bei der Ausnahme von FehlerfallDispatcherErrorHandler trat während der Verarbeitungsanforderung auf: [Verbindungszeitpunkt: Connect - [Unbekannter Ort], NULL]
Als nächstes verwenden wir http: // localhost: 8080/Learstruts2/valatejsp/test.jsp für den Zugriff.
Erfolgreich getestet:
Test.jsp -Schnittstelle:
Success.jsp
Beispiel für Testversagen:
input.jsp Schnittstelle:
Das Beispiel für das Illustration ist korrekt.
Tatsächlich gibt es in Struts2 mehrere integrierte Validatoren: Erforderlicher Validator, Erforderlicher String-Validator, Ganzzahlvalidator, Datum Validator, Expression Validator, Charakterlänge Validator, regulärer Ausdrucksvalidator usw. Bei Bedarf erklärt der Autor diese voneinander.
Das obige ist eine detaillierte Erläuterung des Tutorial für Struts2 -Dateneingabeverifizierung, das Ihnen vom Editor vorgestellt wurde. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!