Der größte Teil der Überprüfung von HTTP-Anforderungsdaten im B/S-System erfolgt auf Client-Seite. Dies ist auch Überlegungen zur Einfachheit und Benutzererfahrung. Die serverseitige Überprüfung ist jedoch in einigen Systemen mit hohen Sicherheitsanforderungen unverzichtbar.
Spring3 unterstützt das JSR-303-Verifizierungsrahmen. JSR-303 ist ein Sub-Spec in Java ee 6, der als Beanvalidation bezeichnet wird. Die offizielle Referenzimplementierung ist Hibernate Validator (hat nichts mit Hibernate ORM zu tun). JSR 303 wird verwendet, um die Werte von Feldern in Java -Bohnen zu überprüfen.
Der Validator überprüft hauptsächlich die Rationalität der vom Benutzer eingereichten Daten, z. B. ob es leer ist, ob die Kennwortlänge größer als 6 Ziffern ist, unabhängig davon, ob es sich um rein digital usw.
Kombiniert mit Validierung und Springboot
1. Fügen Sie Tags zu Bean hinzu
Teil des Code:
Das Tag muss dem Attribut hinzugefügt werden, @Notblank Die Bedeutung des Tags wird am Ende des Artikels erläutert
public class User {private Integer id; @Notblank (message = "{user.name.notblank}") privater String -Name; privater String -Benutzername;2. Schalten Sie die Überprüfung im Controller ein
Fügen Sie das @Validated -Tag dem Anforderungsparameter in Controller hinzu, um die Bestätigung zu aktivieren
@RequestMapping (methode = requestMethod.post) public user create (@RequestBody @Validated User Benutzer) {return userService.create (Benutzer); }3. Erstellen Sie eine neue Fehlermeldungskonfigurationsdatei unter Ressource
Erstellen Sie im Ressourcenverzeichnis eine neue Konfigurationsdatei "ValidationMessages.Properties" "ValidationMessages.Properties"
Hinweis: Der Name muss "validationMessages.Properties" sein, da Springboot die Fehlermeldung in ValidationMessages.Properties im Klassenpfad automatisch liest.
Die Datei validationMessages.Properties wird als ASCII codiert. Der Datentyp ist ein Schlüsselwert. Schlüssel "user.name.notblank" ist der entsprechende Nachrichtenwert in den Klammern der ersten Stufenbean.
Wert ist eine schnelle Nachricht, aber ASCII. (Der Inhalt lautet "Der Name kann nicht leer sein")
4. Passen Sie den Ausnahmebehandler an, um Fehlermeldungen zu fangen
Wenn die Überprüfung fehlschlägt, wird eine Ausnahme ausgelöst. Die Ausnahmemeldung sind die Eingabeaufforderungsinformationen, die in validationMessages.Properties konfiguriert sind. Der Ausnahmebehandler ist hier definiert. Erfassen Sie Ausnahmeinformationen (da möglicherweise mehrere Elemente vorhanden sind, die die Überprüfung nicht bestehen, sie werden einheitlich erfasst und verarbeitet) und werfen sie an das vordere Ende. (Dies ist der separate Absender vorne und hinten)
public void methodArgumentNotvalidexception (Ausnahme ex, httpServletRequest -Anforderung, httpServletResponse -Antwort) {logger.Error (":" + CommonUtil.gethttpclientInfo (Anfrage), Ex); MethodargumentNotvalidexception c = (methodargumentNotvalidexception) ex; Liste <objecterror> fehler = c.GetBindingResult (). GetAllErrors (); StringBuffer errormsg = new StringBuffer (); fehler.stream (). foreach (x -> errormsg.append (x.getDefaultMessage ()). append (";")); pouplateExceptionResponse (Antwort, httpstatus.internal_server_error, errormsg.toString ()); } private void pouPlpaceExceptionResponse (httpServletResponse -Antwort, httpStatus errorCode, String errorMessage) {try {response.sendError (ERRORCODE.VALUE (), ERRORMESSAGE); } catch (ioException e) {logger.Error ("" Antwortfehler nicht bevölkert ", e); }}5. Fügen Sie einige Tag -Bedeutungen bei
| Limit | veranschaulichen |
|---|---|
| @Null | Nur auf Null beschränken |
| @Notnull | Die Grenze darf nicht null sein |
| @Assertfalse | Die Grenze muss falsch sein |
| @AssertRue | Die Grenze muss wahr sein |
| @Decimalmax (Wert) | Die Grenze muss eine Zahl sein, die nicht größer ist als der angegebene Wert. |
| @Decimalmin (Wert) | Die Grenze muss eine Zahl sein, die nicht weniger als der angegebene Wert ist |
| @Digits (Ganzzahl, Bruch) | Die Grenze muss eine Dezimalzahl sein, und die Anzahl der Ziffern im Ganzzahl -Teil darf die Ganzzahl nicht überschreiten, und die Anzahl der Ziffern im Bruchteil darf die Fraktion nicht überschreiten |
| @Zukunft | Die Grenze muss ein zukünftiges Datum sein |
| @Max (Wert) | Die Grenze muss eine Zahl sein, die nicht größer ist als der angegebene Wert. |
| @Min (Wert) | Die Grenze muss eine Zahl sein, die nicht weniger als der angegebene Wert ist |
| @Vergangenheit | Die Grenze muss ein früheres Datum sein |
| @Pattern (Wert) | Die Einschränkung muss dem angegebenen regulären Ausdruck entsprechen |
| @Size (max, min) | Grenzcharakterlänge muss zwischen min und max sein |
| @Vergangenheit | Stellen Sie sicher, dass der Elementwert (Datumstyp) der Annotation früher als die aktuelle Zeit liegt |
| @NotEmpty | Stellen Sie sicher, dass der Elementwert der Verifizierungsannotation nicht null und nicht leer ist (die Zeichenfolgelänge ist nicht 0, die Sammelgröße ist nicht 0) |
| @Notblank | Stellen Sie sicher, dass der Elementwert der Annotation nicht leer ist (nicht null, die Länge ist 0, nachdem Sie den ersten Platz entfernen). Im Gegensatz zu @NotEmpty wird @notblank nur auf Zeichenfolgen angewendet und entfernen die Saitenräume beim Vergleich. |
| Stellen Sie sicher, dass der Elementwert der Annotation E -Mail ist. Sie können auch ein benutzerdefiniertes E -Mail -Format über reguläre Ausdrücke und Flaggen angeben. |
Beispiel
@Pattern (regexp = "^[a-za-z0-9]+$", message = "{account.username.space}") @size (min = 3, max = 20, Message = "{account.username.size}")Beispiel 2
Hier verwenden wir hauptsächlich Anmerkungen zum Lernen. Sprechen wir zuerst über unsere Bedürfnisse:
Wir haben eine Demo.html auf der Seite, es gibt zwei Eingangsfelder von Elementnamen, die Kennworteingabebibliothek und die Schaltfläche Senden.
Verwenden Sie nach der Übermittlung des Hintergrunds den Validator zur Überprüfung und leiten Sie dann an Demo.html weiter, wenn ein Fehler vorliegt.
Wir schreiben zunächst eine Entitätsklasse, um Benutzereingaben zu empfangen, und verwenden Validator Annotation, um zu überprüfen:
Paket com.kfit.demo; import org.hibernate.validator.constraints.length; import org.hibernate.validator.constraints.notEmpty; Public Class Demo {private long id; @NotEmpty (Message = "Name kann nicht leer sein") privater Zeichenfolge Name; @NotEmpty (Message = "Passwort kann nicht leer sein") @Length (min = 6, Message = "Passwortlänge kann nicht weniger als 6 Ziffern") Private String -Passwort; publiclong getid () {return id; } publicVoid setId (longid) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public String getPassword () {Kennwort zurückgeben; } public void setPassword (String -Passwort) {this.password = password; } @Override public String toString () {return "Demo [id =" + id + ", name =" + name + ", password =" + password + "]"; }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.