


Detaillierte Erläuterung der Verwendung der Validierungshintergrundparameterüberprüfung in Java
In diesem Artikel wird hauptsächlich die Verwendung der Java-Validierungs-Hintergrundparameterüberprüfung vorgestellt. Der Herausgeber findet es ziemlich gut. Jetzt werde ich es mit Ihnen teilen und als Referenz geben. Folgen wir dem Editor und werfen wir einen Blick darauf.
1. Einführung
Während des Hintergrundentwicklungsprozesses wird die Überprüfung von Parametern zu einem unverzichtbaren Bestandteil der Entwicklungsumgebung. Parameter dürfen beispielsweise nicht null sein und E-Mails müssen dem E-Mail-Format entsprechen. Wenn Sie manuell Beurteilungen durchführen oder reguläre Ausdrücke zur Beurteilung schreiben, ist die Entwicklungseffizienz zu langsam und Sie geraten im Zeitspiel zwangsläufig ins Hintertreffen , Kosten und Qualität. Daher ist die Abstraktion der Verifizierungsschicht ein unvermeidliches Ergebnis. Hier sind mehrere Lösungen.
2. Mehrere Lösungen
1. Die Gültigkeit von struts2 kann per XML konfiguriert werden. Die Regeln und zurückgegebenen Informationen werden in XML beschrieben. Diese Methode ist problematischer und weist eine geringe Entwicklungseffizienz auf und wird nicht empfohlen.
2. Die Validierungs-Bean basiert auf dem JSR-303-Standard und wird mithilfe von Annotationen implementiert, was sehr praktisch ist, aber nicht ist nur eine Schnittstelle und hat keine spezifische Implementierung. Es implementiert die Validierungs-Bean und ist relativ leistungsfähig 🎜>
3. Einführung in die Überprüfung des Bean-Validierungs-Frameworks
Das Bean-Validierungspaket wird auf Maven verwaltet. Die Koordinaten des neuesten Pakets lauten wie folgt:<dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>1.1.0.Final</version> </dependency>
package com.shishang; import javax.validation.constraints.*; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; public class Student implements Serializable { @NotNull(message = "名字不能为空") private String name; @Size(min = 6,max = 30,message = "地址应该在6-30字符之间") private String address; @DecimalMax(value = "100.00",message = "体重有些超标哦") @DecimalMin(value = "60.00",message = "多吃点饭吧") private BigDecimal weight; private String friendName; @AssertTrue private Boolean isHaveFriend(){ return friendName != null?true:false; } @Future(message = "生日必须在当前实践之前") private Date birthday; @Pattern(regexp = "^(.+)@(.+)$",message = "邮箱的格式不合法") private String email; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public BigDecimal getWeight() { return weight; } public void setWeight(BigDecimal weight) { this.weight = weight; } public String getFriendName() { return friendName; } public void setFriendName(String friendName) { this.friendName = friendName; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }
package com.use; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory; import java.io.Serializable; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; public class StudentTest implements Serializable { public static void main(String[] args) { Student xiaoming = getBean(); List<String> validate = validate(xiaoming); validate.forEach(row -> { System.out.println(row.toString()); }); } private static Student getBean() { Student bean = new Student(); bean.setName(null); bean.setAddress("北京"); bean.setBirthday(new Date()); bean.setFriendName(null); bean.setWeight(new BigDecimal(30)); bean.setEmail("xiaogangfan163.com"); return bean; } private static ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); public static <T> List<String> validate(T t) { Validator validator = factory.getValidator(); Set<ConstraintViolation<T>> constraintViolations = validator.validate(t); List<String> messageList = new ArrayList<>(); for (ConstraintViolation<T> constraintViolation : constraintViolations) { messageList.add(constraintViolation.getMessage()); } return messageList; } }
- Die Adresse sollte zwischen 6 und 30 liegen Zeichen
- Das Format der E-Mail ist illegal
- Der Geburtstag muss vor der aktuellen Uhrzeit liegen
- Iss mehr Essen
- Der Name darf nicht leer sein
- Wie @NotNull, @Size usw. sind relativ einfach und leicht zu verstehen, es gibt nicht viel zu sagen
- Da die Bean-Validierung nur eine Schnittstelle bereitstellt, diese jedoch nicht implementiert Bei der Verwendung muss ein Anbieterpaket hinzugefügt werden, z. B. hibernate-validator
- @Pattern Da es sich um ein reguläres Muster handelt, kann es mehr Dinge tun, z. B. Chinesisch, Zahlen, E-Mail, Länge usw.
- @AssertTRue Dies unterscheidet sich von anderen Mustern. Es gibt einen wesentlichen Unterschied in der Validierungsanmerkung. Diese Anmerkung gilt für mehrere Felder. Im Beispiel basiert die Methode isHaveFriend auf der Überprüfung des Felds „friendName“
- . Die Überprüfungs-API wurde von mir verarbeitet, sodass die Überprüfungsinformationen stapelweise zurückgegeben werden können
- Manchmal werden die von uns benötigten Anmerkungen möglicherweise nicht bereitgestellt. In diesem Fall müssen wir Anmerkungen anpassen und Implementierungsklassen schreiben
4. Benutzerdefinierte Bean-Validierung, Annotationsvalidierung
Manchmal kann das integrierte Framework unsere Anforderungen nicht erfüllen. Das ist nicht schwer, lass uns weiter unten darüber reden. In diesem Beispiel wird überprüft, ob es sich bei der Zeichenfolge um eine Groß- oder Kleinschreibung handelt. Der Code lautet wie folgt:1. Aufzählungstyp, um den Groß- oder Kleinbuchstabenmodus darzustellen
2. Definieren Sie eine CheckCase-Einschränkungsanmerkung
package com.defineconstrain; /** * created by xiaogangfan * on 16/10/25. */ public enum CaseMode { UPPER, LOWER; }
3. Constraint CheckCase-Validator
package com.defineconstrain; /** * created by xiaogangfan * on 16/10/25. */ import static java.lang.annotation.ElementType.*; import static java.lang.annotation.RetentionPolicy.*; import java.lang.annotation.Documented; import java.lang.annotation.Retention; import java.lang.annotation.Target; import javax.validation.Constraint; import javax.validation.Payload; @Target( { METHOD, FIELD, ANNOTATION_TYPE }) @Retention(RUNTIME) @Constraint(validatedBy = CheckCaseValidator.class) @Documented public @interface CheckCase { String message() default "{com.mycompany.constraints.checkcase}"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; CaseMode value(); }
4. Fügen Sie ein Attribut in Student.java hinzu
package com.defineconstrain; /** * created by xiaogangfan * on 16/10/25. */ import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; public class CheckCaseValidator implements ConstraintValidator<CheckCase, String> { private CaseMode caseMode; public void initialize(CheckCase constraintAnnotation) { this.caseMode = constraintAnnotation.value(); } public boolean isValid(String object, ConstraintValidatorContext constraintContext) { if (object == null) return true; if (caseMode == CaseMode.UPPER) return object.equals(object.toUpperCase()); else return object.equals(object.toLowerCase()); } }
5 eine Zeile
@CheckCase(value = CaseMode.LOWER,message = "名字的拼音需要小写") private String spellName;
zur getBean()-Methode. 6. Führen Sie die testValidation()-Methode aus. Die Ausgabe lautet wie folgt:
bean.setSpellName("XIAOGANGFAN");
- Das Format der E-Mail ist illegal
- Der Geburtstag muss vor dem liegen aktuelle Uhrzeit
- Mehr essen
- Das Pinyin des Namens muss klein geschrieben werden
- Der Name darf nicht leer sein
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung der Validierungshintergrundparameterüberprüfung in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Leitfaden zur Quadratwurzel in Java. Hier diskutieren wir anhand eines Beispiels und seiner Code-Implementierung, wie Quadratwurzel in Java funktioniert.

Leitfaden zur perfekten Zahl in Java. Hier besprechen wir die Definition, Wie prüft man die perfekte Zahl in Java?, Beispiele mit Code-Implementierung.

Leitfaden zur Armstrong-Zahl in Java. Hier besprechen wir eine Einführung in die Armstrong-Zahl in Java zusammen mit einem Teil des Codes.

Leitfaden zum Zufallszahlengenerator in Java. Hier besprechen wir Funktionen in Java anhand von Beispielen und zwei verschiedene Generatoren anhand ihrer Beispiele.

Leitfaden für Weka in Java. Hier besprechen wir die Einführung, die Verwendung von Weka Java, die Art der Plattform und die Vorteile anhand von Beispielen.

Leitfaden zur Smith-Zahl in Java. Hier besprechen wir die Definition: Wie überprüft man die Smith-Nummer in Java? Beispiel mit Code-Implementierung.

In diesem Artikel haben wir die am häufigsten gestellten Fragen zu Java Spring-Interviews mit ihren detaillierten Antworten zusammengestellt. Damit Sie das Interview knacken können.

Java 8 führt die Stream -API ein und bietet eine leistungsstarke und ausdrucksstarke Möglichkeit, Datensammlungen zu verarbeiten. Eine häufige Frage bei der Verwendung von Stream lautet jedoch: Wie kann man von einem Foreach -Betrieb brechen oder zurückkehren? Herkömmliche Schleifen ermöglichen eine frühzeitige Unterbrechung oder Rückkehr, aber die Stream's foreach -Methode unterstützt diese Methode nicht direkt. In diesem Artikel werden die Gründe erläutert und alternative Methoden zur Implementierung vorzeitiger Beendigung in Strahlverarbeitungssystemen erforscht. Weitere Lektüre: Java Stream API -Verbesserungen Stream foreach verstehen Die Foreach -Methode ist ein Terminalbetrieb, der einen Vorgang für jedes Element im Stream ausführt. Seine Designabsicht ist
