Heim >Java >javaLernprogramm >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 🎜>
Klicken Sie hier, um die chinesische Version anzuzeigen. Offizielles Handbuch 3. Oval ist ein erweiterbares Java-Objektdatenüberprüfungs-Framework, das über Konfigurationsdateien festgelegt werden kann. Anmerkung und POJOs. Sie können reine Java-Sprache, JavaScript, Groovy, BeanShell usw. verwenden, um Regeln zu schreiben. Diesmal werde ich nicht zu viel erklären3. 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>Klicken Sie hier, um es anzuzeigen die neueste KoordinatenadresseHerunterladen Nach dem Öffnen dieses Pakets gibt es ein Paket namens Constraints, das Verifizierungsanmerkungen enthält:
Beginnen wir mit dem Üben mit dem Code: 1. Definieren Sie eine zu verifizierende Bean: Student.java
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; } }2. Testklasse: StudentTest.java
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; } }3. Führen Sie die testValidation()-Methode aus. Die Ausgabe lautet wie folgt:
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");Die Adresse sollte zwischen 6 und 30 Zeichen lang 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!