מדריך מהיר למשתני מטריקס MVC באביב

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

מפרט ה- URI RFC 3986 הגדיר פרמטרים של נתיב URI כצמדי שם-ערך. משתני מטריקס הם מונח שטבע קפיץ ומימוש חלופי להעברה וניתוח פרמטרים של נתיב URI.

תמיכה במשתני מטריצה ​​זמינה באביב MVC 3.2 והיא מיועדת לפשט בקשות עם מספר רב של פרמטרים.

במאמר זה נראה כיצד אנו יכולים לפשט בקשות GET מורכבות המשתמשות בפרמטרים נתיביים משתנים או אופציונליים בתוך קטעי הנתיב השונים של URI.

2. תצורה

כדי לאפשר משתני מטריצה ​​של Spring MVC, נתחיל בתצורה:

@Configuration בכיתה ציבורית WebConfig מיישם את WebMvcConfigurer {@Override public void configurePathMatch (PathMatchConfigurer configurer) {UrlPathHelper urlPathHelper = new UrlPathHelper (); urlPathHelper.setRemoveSemicolonContent (שקר); configurer.setUrlPathHelper (urlPathHelper); }}

אחרת, הם מושבתים כברירת מחדל.

3. כיצד להשתמש במשתני מטריקס

משתנים אלה יכולים להופיע בכל חלק של הנתיב, והתו שווה ("=") משמש למתן ערכים ואת נקודה-פסיק (';') לתחום כל משתנה מטריצה. באותו נתיב, אנו יכולים גם לחזור על אותו שם משתנה או להפריד בין ערכים שונים באמצעות פסיק התו (',').

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

// localhost: 8080 / spring-mvc-java-2 / employeeArea / workingArea = rh, informatics, admin

או ככה:

// localhost: 8080 / spring-mvc-java-2 / employeeArea / workingArea = rh; workingArea = informatics; workingArea = admin

כאשר אנו רוצים להתייחס למשתנים אלה ב- Spring MVC, עלינו להשתמש בהערה @MatrixVariable.

בדוגמאות שלנו נשתמש ב- עוֹבֵד מעמד:

שכבה ציבורית שכיר {מזהה פרטי ארוך; שם מחרוזת פרטי; פרטי מחרוזת contactNumber; // סטרים וקובעים סטנדרטיים}

וגם ה חֶברָה מעמד:

חברה ממעמד ציבורי {מזהה פרטי ארוך; שם מחרוזת פרטי; // סטרים וקובעים סטנדרטיים}

שני המחלקות הללו יחייבו את פרמטרי הבקשה.

4. הגדרת מאפייני משתנה מטריקס

אנו יכולים לציין מאפיינים נדרשים או ברירת מחדל עבור המשתנה. בדוגמה הבאה, contactNumber נדרש, ולכן זה חייב להיכלל בדרכנו, משהו כזה:

// localhost: 8080 / spring-mvc-java-2 / עובדים קשרים / contactNumber = 223334411

הבקשה תטופל בשיטה הבאה:

@RequestMapping (value = "/ workersContacts / {contactNumber}", method = RequestMethod.GET) @ResponseBody תגובה תגובה ציבורית getEmployeeBycontactNumber (@MatrixVariable (חובה = אמת) contactNumber מחרוזת) {List workersList = ArrayList חדש (); ... להחזיר תגובה חדשה(רשימת עובדים, HttpStatus.OK); }

כתוצאה מכך נקבל את כל העובדים שיש להם את מספר הקשר 223334411.

5. פרמטר משלים

משתני מטריקס יכולים להשלים משתני נתיבים.

לדוגמא, אנו מחפשים אחר העובד את שמו / ה, אך אנו יכולים לכלול גם את מספרי ההתחלה של מספר איש הקשר שלו.

הבקשה לחיפוש זה צריכה להיות כך:

// localhost: 8080 / spring-mvc-java-2 / עובדים / ג'ון; beginContactNumber = 22001

הבקשה תטופל בשיטה הבאה:

@RequestMapping (value = "/ workers / {name}", method = RequestMethod.GET) @ResponseBody Response Public Antwoord getEmployeeByNameAndBeginContactNumber (@PathVariable שם מחרוזת, @MatrixVariable מחרוזת beginContactNumber) {List workersList = ArrayList new (); ... להחזיר ResponseEntity חדש (workersList, HttpStatus.OK); }

כתוצאה מכך נקבל את כל העובדים שיש להם את מספר הקשר 22001 או ששמו שם ג'ון.

6. כריכת כל משתני המטריצה

אם מסיבה כלשהי, אנו רוצים לקבל את כל המשתנים הזמינים בנתיב, נוכל לקשור אותם ל- a מַפָּה:

// localhost: 8080 / spring-mvc-java-2 / employeeData / id = 1; name = John; contactNumber = 2200112334

בקשה זו תטופל בשיטה הבאה:

@GetMapping ("werknemersData / {עובד}") @ ResponseBody תגובה תגובה ציבורית getEmployeeData (@ MatrixVariable Map matrixVars) {להחזיר ResponseEntity חדש (matrixVars, HttpStatus.OK); }

כמובן, אנו יכולים להגביל את הכריכה למשתני המטריצה ​​של חלק מסוים בנתיב. לדוגמא, אם יש לנו בקשה כזו:

// localhost: 8080 / spring-mvc-java-2 / companyEmployee / id = 2; name = Xpto / employeeData / id = 1; name = John; contactNumber = 2200112334

ואנחנו רק רוצים לקבל את כל המשתנים השייכים להם עובד נתונים; אז עלינו להשתמש בפרמטר קלט בזה:

@RequestMapping (value = "/ companyEmployee / {company} / employeeData / {עובד}", שיטה = RequestMethod.GET) @ ResponseBody Response Public getEmployeeDataFromCompany (@MatrixVariable (pathVar = "עובד") מפת matrixVars) {...}

7. כריכה חלקית

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

// localhost: 8080 / spring-mvc-java-2 / companyData / id = 2; name = Xpto / employeeData / id = 1; name = John; contactNumber = 2200112334

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

@MatrixVariable (value = "name", pathVar = "company") שם מחרוזת 

8. מסקנה

מאמר זה המחיש כמה מהדרכים השונות בהן ניתן להשתמש במשתני מטריצה.

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

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


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