חומר זה הוא החלק האחרון בסדרת "מבוא לפיתוח ארגוני". מאמרים קודמים:
בואו נסתכל על הדוגמה הפשוטה ביותר של יישום MVC באמצעות Spring-MVC כדוגמה. לשם כך, בואו נכתוב אפליקציה קטנה של Hello World ב-spring-boot. כדי שתוכל לחזור על הכל בעצמך, אני אתן לך הוראות שלב אחר שלב. תחילה נכתוב אפליקציה קטנה, ולאחר מכן ננתח אותה.
שלב 1: צור יישום קפיצי אתחול ב-IntelliJ IDEA
באמצעות קובץ -> חדש -> פרויקט... צור פרויקט חדש. בחלון שנפתח, בתפריט הצד השמאלי, בחר Spring Initializr, בחר Project SDK, והשאיר את האפשרות Initializr Service URL כברירת מחדל.
לחץ על הלחצן הבא. בחלון הבא עלינו לבחור פרמטרים של פרויקט. יהיה לנו פרויקט של מייבן. בחרו Type - Maven Project, מלאו קבוצה ו-Artifact
ולחץ על Next. בחלון הבא עלינו לבחור את רכיבי Spring Framework בהם נשתמש. אנחנו צריכים רק שניים:
- Spring Web הוא רכיב שיאפשר לנו ליצור אפליקציות אינטרנט. רכיב זה כולל Spring MVC.
- Thymeleaf - מה שנקרא מנוע תבנית. דבר שיאפשר לנו להעביר נתונים מג'אווה לדפי HTML
בחלון הבא, בחר את השם והמיקום של הפרויקט במערכת הקבצים:
לחץ על כפתור סיום. הפרויקט נוצר. יש לנו את מבנה הפרויקט הבא:
כאן אנו מעוניינים ב-2 קבצים: pom.xml - מתאר פריסה. דבר המאפשר לך לייבא במהירות ובקלות ספריות ממסגרות שונות לפרויקט שלנו, כמו גם דבר בו אנו מגדירים את ההרכבה של האפליקציה שלנו. האפליקציה שלנו בנויה באמצעות Maven, pom.xml הוא קובץ התצורה של מערכת הבנייה הזו. מחלקה Java - MvcDemoApplication. זהו המחלקה העיקרית של האפליקציה שלנו, ממנה נשיק את פרויקט האביב-מגפיים שלנו. כדי להתחיל, פשוט הפעל את השיטה הראשית במחלקה זו. הנה הקוד למחלקה זו, כמו גם הקובץ pom.xml: MvcDemoApplication:
@SpringBootApplication
public class MvcDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MvcDemoApplication.class, args);
}
}
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.javarush</groupId>
<artifactId>mvc_demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>mvc_demo</name>
<description>Spring MVC Demo</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
שלב 2. צור דפי אינטרנט
האפליקציה שלנו תהיה פשוטה ביותר. יהיה לנו עמוד ראשי - index.html, שבתוכו יהיה קישור לעמוד הפתיחה - greeting.html. בדף הברכה נציג את הברכה. בואו ליישם את היכולת לשלוח שם ברכה לעמוד greeting.html באמצעות פרמטרים של url. בואו ניצור את העמוד הראשי של האפליקציה שלנו - index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Main page</title>
</head>
<body>
<p>Get your greeting <a href="/greeting">here</a></p>
</body>
</html>
כעת ניצור את הדף greeting.html:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<p th:text="'Hello, ' + ${name} + '!'" />
</body>
</html>
כאן, מדף HTML לא טיפוסי, אתה יכול לראות תג:
<p th:text="'Hello, ' + ${name} + '!'" />
תכונת
th
התג
p
היא כלי של מנוע התבנית Thymeleaf. הודות לו, הערך של התג
p
יהיה הטקסט "Hello, " + הערך של המשתנה
name
, אותו נגדיר מקוד Java.
שלב 3: צור בקר
בתוך חבילת mvc_demo ניצור חבילת contoller, שבתוכה ניצור את הבקר שלנו, HelloWorldController:
@Controller
public class HelloWorldController {
@RequestMapping(value = "/greeting")
public String helloWorldController(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
}
מצד אחד יש מעט מאוד קוד, אבל מצד שני קורה הרבה. בואו נתחיל בניתוח. ההערה @Controller מציינת שהמחלקה הזו היא בקר. בקרים ב-Spring מעבדים בקשות HTTP לכתובות ספציפיות. לכיתה שלנו יש שיטת helloWorldController, המסומנת עם ההערה - @RequestMapping(value = "/greeting"). ביאור זה אומר לנו ששיטה זו מעבדת בקשות HTTP GET לכתובת /greeting. במילים אחרות, שיטה זו תעבוד אם מישהו ילך אל /greeting. שיטה זו מחזירה String. לפי Spring-MVC, שיטת הבקר חייבת להחזיר את שם התצוגה. לאחר מכן, Spring יחפש קובץ HTML באותו שם, שיוחזר כתגובה לבקשת HTTP. כפי שניתן לראות, השיטה שלנו מחזירה את שם דף האינטרנט שיצרנו קודם לכן - ברכה. השיטה שלנו לוקחת 2 טיעונים. בואו נסתכל עליהם: פרמטר 1: @RequestParam(name = "name", required = false, defaultValue = "World") שם מחרוזת. ההערה @RequestParam קובעת שהפרמטר String name הוא פרמטר url. הסוגריים של ההערות מציינים שהפרמטר הזה בכתובת האתר הוא אופציונלי (חובה = false), אם הוא נעדר, הערך של הפרמטר String name יהיה World (defaultValue = "World"), ואם הוא קיים, אז פרמטר זה ב-url ייקרא שם (שם = "שם") יכול להיות שיש כאן הרבה לא ברור. בואו ניתן דוגמאות. הטבלה למטה מראה מה יהיה הערך של פרמטר שם המחרוזת עבור אפשרויות שונות לגישה לכתובת /greeting (עם ובלי פרמטרים בכתובת ה-URL)
כתובת אתר לדוגמה |
ערך פרמטר שם מחרוזת |
/בְּרָכָה |
עוֹלָם |
/greeting?name=אמיגו |
אמיגו |
/greeting?name=Zor |
זור |
פרמטר 2: הפרמטר השני הוא Model model. פרמטר זה הוא מודל. מודל זה מורכב מבפנים מתכונות שונות. לכל תכונה יש שם וערך. משהו כמו צמדי מפתח-ערך. באמצעות פרמטר זה, אנו יכולים להעביר נתונים מקוד Java לדפי HTML. או, בטרמינולוגיה של MVC, העבר נתונים מהמודל לתצוגה. נותר לנתח את השורה האחרונה. הדרך בה אנו מעבירים נתונים מג'אווה ל-html או מדגם ל-View. גוף השיטה מכיל את השורה הבאה:
model.addAttribute("name", name);
כאן אנו יוצרים תכונה חדשה בשם name ומקצים לה את הערך של פרמטר השם. זכור, רק לאחרונה דנו בתג:
<p th:text="'Hello, ' + ${name} + '!'" />
אמרנו שהערך של תג p יהיה הטקסט "Hello, " + הערך של משתנה השם, אותו נגדיר מקוד Java. אנו קובעים ערך זה באמצעות הקו
model.addAttribute("name", name);
שלב 5. הפעל
כדי להפעיל, אנחנו צריכים להפעיל את השיטה הראשית במחלקה MvcDemoApplication:
ביומני ההשקה, נראה שיישום האינטרנט שלנו התחיל ביציאה 8080:
וזה אומר שאנחנו יכולים לעבור לדף בדפדפן:
http:// localhost:8080 :
כאן הוצג לנו העמוד index.html. בואו נעקוב אחר הקישור לברכה:
עם המעבר הזה, הבקר שלנו עבד. לא העברנו פרמטרים דרך ה-URL, לכן, כפי שצוין בהערה, הערך של תכונת name קיבל את ערך ברירת המחדל World. כעת ננסה להעביר את הפרמטר דרך url:
הכל עובד כמתוכנן. כעת נסה להתחקות אחר הנתיב של משתנה השם:
- המשתמש העביר את הערך של שם הפרמטר = Amigo -> דרך url
- הבקר עיבד את הפעולה שלנו, קיבל את משתנה השם והגדיר את תכונת המודל, עם השם שם והערך המקובל ->
- מהמודל, הנתונים הללו עברו ל-View, לעמוד greeting.html והוצגו למשתמש
זה הכל!
היום הכרנו לכם נושא די גדול ומעניין של MVC (דגם - תצוגה - בקר). זהו סוף הסדרה, שמטרתה להציג בפניכם את מה שאתם צריכים לדעת לפני שמתחילים בפיתוח Enterprise.
השאר נושאים שמעניינים אותך בתגובות - אנחנו נעשה את זה! |
GO TO FULL VERSION