SpringMVC unterstützt die Datenüberprüfung ist der JSR303 -Standard und wird durch Eingabe @notnull, @max usw. überprüft. JSR303 bietet viele Annotationsschnittstellen, und SpringMVC verwendet Hibernate für diese Überprüfungen. Daher müssen wir ein Validator -Paket für Hibernate hinzufügen:
Auf Zitate verlassen
Kompilieren Sie 'javax.validation: validation-api: 2.0.0.final' compile 'org.hibernate: hibernate-validator: 6.0.0.final'
Der Framework hat die Überprüfung wie folgt vorgelegt:
Überprüfen Sie die von JSR bereitgestellten Anmerkungen:
@Null Das kommentierte Element muss null sein
@Notnull Das kommentierte Element darf nicht null sein, kann nicht null sein, kann "" sein ""
@AssertRue Das kommentierte Element muss wahr sein
@AssertFalse Das kommentierte Element muss falsch sein
@Min (Wert) Das kommentierte Element muss eine Zahl sein, und sein Wert muss größer oder gleich dem angegebenen Mindestwert sein.
@Max (Wert) Das kommentierte Element muss eine Zahl sein, und sein Wert muss geringer oder gleich dem angegebenen Maximalwert sein.
@Decimalmin (Wert) Das kommentierte Element muss eine Zahl sein und sein Wert muss größer oder gleich dem angegebenen Mindestwert sein
@Decimalmax (Wert) Das kommentierte Element muss eine Zahl sein, und sein Wert muss geringer oder gleich dem angegebenen Maximalwert sein
@Size (max =, min =) überprüfen Sie, ob die Länge des Objekts (Array, Sammlung, Karte, String) innerhalb des angegebenen Bereichs liegt
@Digits (Ganzzahl, Fraktion) Das kommentierte Element muss eine Zahl sein und sein Wert muss in einem akzeptablen Bereich liegen.
@Paste Das kommentierte Element muss ein früheres Datum sein
@Future Das kommentierte Element muss ein zukünftiges Datum sein
@Pattern (Regex =, Flag =) Das kommentierte Element muss dem angegebenen regulären Ausdruck entsprechen
Überprüfen Sie die Anmerkungen, die vom Hibernate Validator bereitgestellt werden:
@Notblank (message =) kann nur in der Zeichenfolge verwendet werden, nicht in Null, und nach dem Aufrufen von TRIM () muss die Länge größer als 0 sein
@Email Das kommentierte Element muss eine E -Mail -Adresse sein
@Length (min =, max =) Die Größe der kommentierten Zeichenfolge muss im angegebenen Bereich liegen.
@NotEmpty Die kommentierte Zeichenfolge muss nicht leer sein, kann nicht null sein, "" kann "" sein ""
@Range (min =, max =, message =) Das kommentierte Element muss sich innerhalb des entsprechenden Bereichs befinden
Beispieldemonstration
Erstellen Sie eine Entitätsklasse, die überprüft werden muss:
Paket com.yiba.wifi.news.bean.model; import org.hibernate.validator.constraints.length; importieren javax.validation.constraints. // Benutzername @min (value = 1, Message = "Mindestalter ist 1 Jahr alt") @max (value = 120, Message = "Maximales Alter ist 120") Ganzzahl Alter; // AGEMAIL @EMAIL (Message = "E -MailBox -Format -Fehler") @notblank (Message = "E -MailBox -Format -Fehler") String -E -Mail; // E -Mail @Length (min = 6, max = 12, Message = "Die Kennwortlänge muss zwischen 6 und 12 Ziffern liegen") String PWD; // Passwort // Get, festlegen .........}
Beachten Sie, dass bei der Überprüfung der E -Mail, wenn die E -Mail "" oder NULL lautet, @Email -Überprüfung übergeben wird. Die E -Mail -Überprüfung erfordert also, dass @Email und @Notblank zusammenarbeiten.
Controller -Schnittstellendesign, add @Validated Keyword, wobei der Parameter akzeptiert wird
/ *** Login -Schnittstelle* @return*/ @PostMapPing ("Login") öffentlicher String -Login (@validated @RequestBody -Benutzer) {return "OK"; }Zugangstests:
Beim Zugriff auf Daten befindet sich im folgenden Format
{"Name": "", "Alter": 0, "E -Mail": "", "PWD": ""}Die Antwort lautet:
{"Timestamp": 1524640724522, "Status": 400, "Fehler": "Schlechte Anfrage", "Ausnahme": "org.springframework.web.bind.MethodargumentNotvalidexception", "Fehler": [{"codes": ["nichtblank.user.Er.Er.Er.Er.Er.Email.Email.Email.Email.Email.Eln.Eln.Er.El.Email.Email.Email.Em. "Notblank.java.lang.String", "Notblank"], "Argumente": [{"Codes": ["Benutzer.Email", "E -Mail"], "Argumente": null, "DefaultMessage": "E -Mail," Code ":" E -Mail "}," DefaultMessage "rejectedValue": "", "bindingFailure": false, "code": "NotBlank" }, { "codes": [ "NotBlank.user.name", "NotBlank.name", "NotBlank.java.lang.String", "NotBlank" ], "arguments": [ { "codes": [ "user.name", "name" ], "arguments": NULL, "DefaultMessage": "Name", "Code": "Name"}], "DefaultMessage": "Benutzername kann nicht null sein, die Länge muss größer als 0", "Objektname": "Benutzer", "Feld": "Name", "abgelehnt Value": ",", "BindingFailure": Falsch ":" Codes ":" Code ":" Code ":" Code ":" Code ":" Code ":" Code ":" Code ":" Code ":" Code ":" Code ":" Code ":" Code ":" Code ":" Code ":" Code ":" code: " "Length.user.pwd", "Length.pwd", "Length.java.lang.String", "Length" ], "arguments": [ { "codes": [ "user.pwd", "pwd" ], "arguments": null, "defaultMessage": "pwd", "code": "pwd" }, 12, 6 ], "defaultMessage": "password length must zwischen 6 und 12 Bits "," ObjectName ":" Benutzer "," Feld ":" pwd "," abgelehntValue ":" "," BindingFailure ": Falsch," Code ":" Länge "}, {" Codes ": [" min.User.age "," min.age ", min.java. "user.age", "age" ], "arguments": null, "defaultMessage": "age", "code": "age" }, 1 ], "defaultMessage": "minimum age is 1 year old", "objectName": "user", "field": "age", "rejectedValue": 0, "bindingFailure": false, "code": "Min" } ], "message": "Validierung fehlgeschlagen für Object = 'Benutzer'. Fehleranzahl: 4", "Pfad": "/yiba/sms/login"}Sie können sehen, dass die lokale Anfrage die 4 Felder nicht überprüfen konnten. Gibt es also eine Möglichkeit für mich, Ausnahmeinformationen zu erhalten? Die Antwort lautet Ja und wir müssen die Controller -Schnittstelle ändern.
/** * Login -Schnittstelle * * @return */@PostMapping ("Login") öffentlicher String -Login (@validated @RequestBody -Benutzer, BindingResult BindingResult) {if (BindingResult.haserrors ()) {// Es gibt eine Überprüfung, die fehlschlägt. für (objecterror error: Fehlerliste) {System.out.println (error.getDefaultMessage ()); // Spezifische Fehlermeldung ausgeben} return "Parameterausnahme"; } return "ok"; }Anfrage erneut, das Anforderungsformat lautet wie folgt
{"Name": "", "Alter": 0, "E -Mail": "", "PWD": ""}Die Antwort lautet wie folgt
Parameterausnahme
Die auf der Konsole gedruckten Informationen sind wie folgt:
Der Benutzername kann nicht null sein, die Länge muss größer als 0 sein
Die Passwortlänge muss zwischen 6 und 12 Ziffern sein. Mindestalter ist 1 Jahr alter E -Mail -Formatfehler
Sie können sehen, dass wir die Überprüfungsinformationen normal erhalten haben.
Lassen Sie uns eine Referenz für den richtigen Zugriff durchführen:
Die Anforderungsparameter sind wie folgt:
{"Name": "Zhaoyanjun", "Alter": 1, "E -Mail": "[email protected]", "PWD": "123456"}Die Antwort lautet wie folgt:
OK
Die Konsole gibt nichts aus.
Zusammenfassen
Das obige Beispiel ist eine Beispieldemonstration der vom Editor eingeführten Federanfragenparameterfunktion. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird allen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!