יסודות אימות שעועית Java

1. סקירה כללית

במדריך מהיר זה אנו עוסקים את היסודות של אימות שעועית ג'אווה עם המסגרת הסטנדרטית - JSR 380, המכונה גם אימות שעועית 2.0.

אימות קלט משתמשים הוא דרישה נפוצה במיוחד ברוב היישומים. ומסגרת האימות של Java Bean הפכה לסטנדרט בפועל לטיפול בהיגיון מסוג זה.

2. JSR 380

JSR 380 הוא מפרט של Java API לאימות שעועית, חלק מג'קרטה EE ו- JavaSE. זה מבטיח שהתכונות של שעועית עומדות בקריטריונים ספציפיים, תוך שימוש בהערות כגון @לא ריק, @Min, ו @ מקס.

גרסה זו דורשת Java 8 ומעלה ומנצלת תכונות חדשות שנוספו ב- Java 8, כגון הערות סוג ותמיכה בסוגים חדשים כמו אופציונאלי ו LocalDate.

למידע מלא על המפרט, המשך לקרוא את JSR 380.

3. תלות

אנו נשתמש בדוגמה של Maven כדי להראות את התלות הנדרשת. אך כמובן שניתן להוסיף צנצנות אלו בדרכים שונות.

3.1. ממשק API לאימות

לפי מפרט JSR 380, ה- אימות-API תלות מכילה את ממשקי ה- API לאימות סטנדרטיים:

 javax.validation validation-api 2.0.1.Final 

3.2. יישום הפניה לאימות API

מאבחן שינה הוא יישום הפניה של ממשק ה- API לאימות.

כדי להשתמש בו, עלינו להוסיף את התלות הבאה:

 org.hibernate.validator hibernate-validator 6.0.13.Final 

הערה מהירה: מאמת תרדמת שינה הוא נפרד לחלוטין מהיבטי ההתמדה של שינה. לכן, על ידי הוספתו כתלות, איננו מוסיפים את היבטי ההתמדה הללו לפרויקט.

3.3. תלות בשפה ביטוי

JSR 380 תומך באינטרפולציה משתנה, ומאפשר ביטויים בתוך הודעות ההפרה.

כדי לנתח ביטויים אלה, נוסיף את javax.el תלות מ GlassFish, המכיל יישום של מפרט שפת הביטוי:

 org.glassfish javax.el 3.0.0 

4. שימוש בהערות אימות

הנה, ניקח א מִשׁתַמֵשׁ שעועית ולעבוד על הוספת אימות פשוט לה:

ייבא javax.validation.constraints.AssertTrue; ייבא javax.validation.constraints.Max; ייבא javax.validation.constraints.Min; ייבא javax.validation.constraints.NotNull; ייבא javax.validation.constraints.Size; ייבא javax.validation.constraints.Email; משתמש בכיתה ציבורית {@NotNull (message = "שם לא יכול להיות ריק") שם מחרוזת פרטי; @AssertTrue עבודה בוליאנית פרטית; @Size (min = 10, max = 200, message = "עלי חייב להיות בין 10 ל- 200 תווים") פרטי מחרוזת aboutMe; @Min (value = 18, message = "גיל לא צריך להיות פחות מ 18") @Max (value = 150, message = "גיל לא צריך להיות גדול מ -150") גיל פרטי פרטי; @Email (message = "הדוא"ל צריך להיות תקף") דוא"ל מחרוזת פרטי; // סטרים וקובעים סטנדרטיים} 

כל ההערות המשמשות בדוגמה הן הערות JSR סטנדרטיות:

  • @לא ריק מאמת שערך הנכס המבואר אינו ריק.
  • @AssertTrue מאמת שערך הנכס המויין הוא נָכוֹן.
  • @גודל מאמת שלערך המאפיין המאושר יש גודל בין התכונות דקה ו מקסימום; ניתן להחיל על חוּט, אוסף, מַפָּהומאפייני מערך.
  • @Min מאמת שלנכס המסומן יש ערך שאינו קטן מה- ערך תְכוּנָה.
  • @ מקס מאמת שלנכס המסומן יש ערך שאינו גדול מה- ערך תְכוּנָה.
  • @אימייל מאמת כי הנכס המאושר הוא כתובת דוא"ל תקפה.

ביאורים מסוימים מקבלים תכונות נוספות, אך ה- הוֹדָעָה התכונה משותפת לכולם. זוהי ההודעה שבדרך כלל תוצג כאשר ערך המאפיין המתאים נכשל.

וכמה הערות נוספות שניתן למצוא ב- JSR:

  • @לא ריק מאמת כי הנכס אינו ריק או ריק; ניתן להחיל על חוּט, אוסף, מַפָּה אוֹ מַעֲרָך ערכים.
  • @NotBlank ניתן להחיל רק על ערכי טקסט ומאמת כי המאפיין אינו ריק או לבן.
  • @חִיוּבִי ו @PositiveOrZero להחיל על ערכים מספריים ולוודא שהם חיוביים לחלוטין, או חיוביים כולל 0.
  • @שלילי ו @ NegativeOrZero להחיל על ערכים מספריים ולוודא שהם שליליים לחלוטין, או שליליים כולל 0.
  • @עבר ו @ PastOrPresent לאמת שערך תאריך הוא בעבר או בעבר כולל הווה; ניתן להחיל על סוגי תאריכים כולל אלה שנוספו ב- Java 8.
  • @עתיד ו @FutureOrPresent לאמת שערך תאריך הוא בעתיד, או בעתיד כולל ההווה.

ניתן ליישם את הערות האימות גם על אלמנטים באוסף:

העדפות רשימה;

במקרה זה, כל ערך שנוסף לרשימת ההעדפות יאומת.

כמו כן, המפרט תומך בחדש אופציונאלי סוּג בג'אווה 8:

פרטי LocalDate dateOfBirth; public getDateOfBirth () אופציונלי {return Optional.of (dateOfBirth); }

כאן, מסגרת האימות תבטל אוטומטית את ה- LocalDate ערך ותאמת אותו.

5. אימות תכנותי

למסגרות מסוימות - כמו Spring - יש דרכים פשוטות להפעיל את תהליך האימות באמצעות הערות בלבד. זה בעיקר כדי שלא נצטרך לקיים אינטראקציה עם ממשק ה- API לאימות פרוגרמטי.

עכשיו בואו נלך בדרך הידנית ונקבע את הדברים באופן פרוגרמטי:

ValidatorFactory מפעל = Validation.buildDefaultValidatorFactory (); מאמת מאמת = factory.getValidator (); 

כדי לאמת שעועית, ראשית עלינו מאמת אובייקט, שנבנה באמצעות ValidatorFactory.

5.1. הגדרת השעועית

כעת אנו מגדירים את המשתמש הלא חוקי הזה - עם null שֵׁם ערך:

משתמש משתמש = משתמש חדש (); user.setWorking (נכון); user.setAboutMe ("הכל עליי!"); user.setAge (50); 

5.2. אמת את השעועית

עכשיו שיש לנו מאמת, אנו יכולים לאמת את השעועית שלנו על ידי העברתה ל לְאַמֵת שיטה.

כל הפרה של האילוצים המוגדרים ב- מִשׁתַמֵשׁ אובייקט יוחזר כ- מַעֲרֶכֶת:

מַעֲרֶכֶת הפרות = validator.validate (משתמש); 

על ידי איטרציה על ההפרות, אנו יכולים לקבל את כל הודעות ההפרה באמצעות ה- getMessage שיטה:

עבור (ConstraintViolation הפרה: הפרות) {log.error (viol.getMessage ()); } 

בדוגמה שלנו (ifNameIsNull_nameValidationFails), הסט יכלול סינגל אילוץ הפרה עם ההודעה "שם לא יכול להיות ריק".

6. מסקנה

מאמר זה התמקד במעבר פשוט דרך ה- API לאימות תקן של Java. הראינו את היסודות של אימות שעועית באמצעות javax.validation הערות וממשקי API.

כרגיל, ניתן למצוא יישום של המושגים במאמר זה ואת כל קטעי הקוד ב- GitHub.


$config[zx-auto] not found$config[zx-overlay] not found