מבוא לשחק ב- Java

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

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

פליי היא מסגרת יישומי אינטרנט פרודוקטיבית לשפות תכנות שקודן מורכב ומופעל ב- JVM, בעיקר Java ו- Scala. הוא משלב את הרכיבים ו- APIs הדרושים לנו לפיתוח יישומי אינטרנט מודרניים.

2. הפעל את הגדרת המסגרת

בואו נעבור לדף הרשמי של Play framework ונוריד את הגרסה האחרונה של ההפצה. בזמן הדרכה זו, האחרונה היא גרסה 2.7.

אנו נוריד את תיקיית ה- zip של Hello Hello World הדרכה ונפתח את הקובץ למיקום נוח. בשורש התיקיה הזו, נמצא sbt הפעלה שנוכל להשתמש בה להפעלת היישום. לחלופין, אנו יכולים להתקין sbt מהדף הרשמי שלהם.

להשתמש sbt מהתיקייה שהורדת, בוא נעשה את הפעולות הבאות:

cd / path / to / folder / ./sbt הפעלה

שים לב שאנחנו מריצים סקריפט בספריה הנוכחית, ומכאן השימוש ב- ./ תחביר.

אם נתקין sbt, אז נוכל להשתמש בו במקום:

הפעלת cd / path / to / folder / sbt

לאחר הפעלת פקודה זו, נראה משפט שאומר "(השרת התחיל, השתמש Enter כדי לעצור ולחזור למסוף ...)". פירוש הדבר שהיישום שלנו מוכן, ולכן כעת נוכל לעבור אליו // localhost: 9000 שם יוצג בפנינו דף קבלת פנים של Play:

3. אנטומיה של יישומי הפעלה

בחלק זה, נבין טוב יותר כיצד בנוי יישום Play ולמה משמשים כל קובץ וספרייה במבנה זה.

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

אלה הקבצים והתיקיות שאנו מוצאים ביישום Play Framework טיפוסי:

├── אפליקציה → מקורות יישומים │ ├── נכסים → מקורות נכסים מקובצים │ │ ├── כתבי יד → בדרך כלל מקורות של סקריפט קפה │ │ └── גיליונות סגנונות → בדרך כלל מקורות CSS פחותים │ ├── בקרים → בקרי יישומים │ ├── מודלים → שכבת עסק יישומית views └── תצוגות → תבניות ├── build.sbt → סקריפט לבניית יישומים ├── conf → קבצי תצורה ומשאבים אחרים שאינם מחוברים (על מסלול הכיתה) │ ├── application.conf → קובץ תצורה ראשי │ └── מסלולים → הגדרת מסלולים ├── dist → קבצים שרירותיים שיש לכלול בהפצת הפרויקטים שלך ├── lib → תלות בספריות לא מנוהלות ├── יומנים → תיקיית יומנים │ └── application.log → קובץ יומן ברירת מחדל ├─ ─ פרויקט → קבצי תצורה של sbt │ ├── build.properties → סמן לפרויקט sbt │ └── תוספים. Sbt → תוספי sbt כולל ההצהרה על Play עצמה ├── ציבורי → נכסים ציבוריים │ ├── תמונות → קבצי תמונה │ ├── תסריטי ג'אווה → קבצי Javascript │ └── גיליונות סגנונות → קבצי CSS target── יעד → נוצר f iles │ ├── רזולוציית מטמון → מידע על תלות │ ├── scala-2.11 │ │ ├── api → מסמכי API שנוצרו │ │ ├── מחלקות → קבצי מחלקה מורכבים │ │ ├── מסלולים → מקורות שנוצרו ממסלולים │ │ └── סיבוב → מקורות שנוצרו מתבניות │ ├── אוניברסלי → אריזות יישומים │ └── אינטרנט → נכסי אינטרנט מקובצים └── בדיקה → תיקיית מקור לבדיקות יחידה או פונקציונליות 

3.1. ה אפליקציה מַדרִיך

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

ה אפליקציה הספריה מכילה כמה ספריות משנה חשובות, שכל אחת מהן מחביקה חלק אחד בתבנית האדריכלית של MVC:

  • דגמים - זו השכבה העסקית של היישומים, הקבצים שבחבילה זו ככל הנראה יעצבו את טבלאות מסדי הנתונים שלנו ויאפשרו לנו לגשת לשכבת ההתמדה
  • נופים - כל תבניות ה- HTML שניתן לעבד לדפדפן כוללות תיקיה זו
  • בקרים - תיקיית משנה בה יש לנו את הבקרים שלנו. בקרים הם קבצי מקור של Java המכילים פעולות לביצוע עבור כל קריאת API. פעולות הן שיטות ציבוריות המעבדות בקשות HTTP ומחזירות תוצאות זהות לתגובות HTTP
  • נכסים- ספרית משנה המכילה נכסים מקובצים כגון CSS ו- javascript. מוסכמות השמות שלעיל הן גמישות, אנו יכולים ליצור את החבילות שלנו למשל. an אפליקציה / כלים חֲבִילָה. אנו יכולים גם להתאים אישית את שמות החבילה אפליקציה / com / baeldung / בקרים

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

3.2. ה פּוּמְבֵּי מַדרִיך

משאבים המאוחסנים ב פּוּמְבֵּי ספרייה הם נכסים סטטיים המוגשים ישירות על ידי שרת האינטרנט.

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

3.3. ה conf מַדרִיך

ה conf הספרייה מכילה קבצי תצורת יישומים. ה application.conf זה המקום בו נציב את רוב מאפייני התצורה עבור יישום Play. נגדיר נקודות קצה עבור האפליקציה ב מסלולים.

אם היישום זקוק לקבצי תצורה נוספים, יש להכניס אותם לספריה זו.

3.4. ה lib מַדרִיך

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

3.5. ה build.sbt קוֹבֶץ

ה build.sbt קובץ הוא סקריפט בניית היישומים. זה המקום בו אנו מפרטים תלות הדרושה להפעלת היישום, כגון ספריות בדיקה והתמדה.

3.6. ה פּרוֹיֶקט מַדרִיך

כל הקבצים שמגדירים את תהליך הבנייה בהתבסס על SBT נמצאים ב- פּרוֹיֶקט מַדרִיך.

3.7. ה יַעַד מַדרִיך

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

לאחר שראינו ובדקנו את מבנה הספריות של הדוגמה של Play Framework Hello World שהורדנו זה עתה, נוכל כעת לעבור על יסודות המסגרת באמצעות דוגמה.

4. דוגמה פשוטה

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

במקום להוריד פרויקט לדוגמה ולבנות ממנו, בואו נראה דרך אחרת שנוכל ליצור יישום Play Framework באמצעות ה- sbt חדש פקודה.

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

sbt playframework חדש / play-java-seed.g8

בשביל זה, יהיה עלינו להתקין sbt כבר כמוסבר בסעיף 2.

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

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

הפעלת cd / path / to / folder / sbt

הפקודה הנ"ל, לאחר השלמת הביצוע, יוליד שרת על מספר היציאה 9000 לחשוף את ה- API שלנו, אליהם אנו יכולים לגשת // localhost: 9000. עלינו לראות את ההודעה "ברוך הבא לשחק" בדפדפן.

ל- API החדש שלנו יש שתי נקודות קצה שניתן כעת לנסות בתורן מהדפדפן. הראשון - שהעלינו זה עתה - הוא נקודת הקצה הבסיסית, אשר טוענת דף אינדקס עם "ברוך הבא לשחק!" הוֹדָעָה.

השנייה, בשעה // localhost: 9000 / נכסים, מיועד להורדת קבצים מהשרת על ידי הוספת שם קובץ לנתיב. אנו יכולים לבדוק נקודת קצה זו על ידי קבלת ה- favicon.png הקובץ, שהורד יחד עם היישום, בכתובת //localhost:9000/assets/images/favicon.png.

5. פעולות ובקרים

שיטת Java בתוך מחלקת בקר המעבדת פרמטרים של בקשה ומייצרת תוצאה שתישלח ללקוח נקראת פעולה.

בקר הוא מחלקה של Java שמתרחבת play.mvc.Controller הלוגית מקבצת יחד פעולות שעשויות להיות קשורות לתוצאות שהם מייצרים עבור הלקוח.

בוא נעבור עכשיו אל app-parent-dir / app / controllers ושימו לב HomeController.java.

ה HomeControllerפעולת האינדקס מחזירה דף אינטרנט עם הודעת קבלת פנים פשוטה:

אינדקס תוצאות ציבורי () {החזר בסדר (views.html.index.render ()); }

דף אינטרנט זה הוא ברירת המחדל אינדקס תבנית בחבילת הצפיות:

@main ("ברוך הבא לשחק") {}

כפי שמוצג לעיל, אינדקס דף קורא רָאשִׁי תבנית. לאחר מכן התבנית הראשית מטפלת בעיבוד כותרת העמוד ותגי גוף. נדרשים שני טיעונים: א חוּט לכותרת העמוד ו- HTML אובייקט להכניס לגוף הדף.

@ (כותרת: מחרוזת) (תוכן: Html) @ * כאן אנו מעבירים את כותרת הדף 'מחרוזת'. * @ @ title @ * וכאן אנו מעבירים את האובייקט 'Html' המכיל * את תוכן העמוד. * @ @ תוכן 

בואו נשנה את הטקסט ב- אינדקס תייק מעט:

@main ("ברוך הבא לבלדונג") {}

טעינה מחדש של הדפדפן תיתן לנו כותרת מודגשת:

ברוכים הבאים ללימוד Play Framework ב- Baeldung!

אנו יכולים למחוק את התבנית לחלוטין על ידי הסרת ה- לְדַקלֵם הנחיה ב אינדקס() שיטת ה- HomeController כדי שנוכל להחזיר טקסט רגיל או טקסט HTML ישירות:

אינדקס תוצאות ציבורי () {return ok ("REST API with Play by Baeldung"); }

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

ממשק API REST עם Play מאת Baeldung

באותה מידה נוכל להפיק HTML על ידי גלישת הטקסט בכותרת ואז להעביר את טקסט ה- HTML אל ה- HTML.apply שיטה. אתם מוזמנים לשחק איתו.

בואו נוסיף a / baeldung / html נקודת קצה ב מסלולים:

בקרי GET / baeldung / html.HomeController.applyHtml

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

התוצאה הציבורית applyHtml () {return ok (Html.apply ("")); }

כשאנחנו מבקרים // localhost: 9000 / baeldung / html נראה את הטקסט לעיל מעוצב ב- HTML.

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

ראינו גם שני מאפיינים חשובים אחרים של Play Framework.

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

שנית, Play מספק לנו שיטות עוזרות לתגובות HTTP סטנדרטיות ב play.mvc. תוצאות מעמד. דוגמה לכך היא בסדר() שיטה, המחזירה תגובת OK HTTP 200 לצד גוף התגובה שאנו מעבירים אליו כפרמטר. כבר השתמשנו בשיטה להצגת טקסט בדפדפן.

ישנן שיטות עוזרות נוספות כגון לא נמצא() ו badRequest () בתוך ה תוצאות מעמד.

6. מניפולציה של תוצאות

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

להחזיר בסדר ("טקסט לתצוגה");

ואז Play היה מגדיר אוטומטית את סוג תוכן כותרת אל טקסט / רגיל. למרות שזה עובד ברוב המקרים, אנו יכולים להשתלט על השליטה ולהתאים אישית את כותרת סוג התוכן.

בואו התאמה אישית של התגובה עבור HomeController.customContentType פעולה ל טקסט / HTML:

תוצאה ציבורית customContentType () {return ok ("זהו תוכן טקסט כלשהו"). כמו ("text / html"); }

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

אנחנו יכולים לעשות משהו דומה לכותרות מוגדרות:

התוצאה הציבורית setHeaders () {return ok ("זהו תוכן טקסט כלשהו") .as ("text / html") .withHeader ("כותרת-מפתח", "ערך כלשהו"); }

7. מסקנה

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

כרגיל, קוד המקור של הדרכה זו זמין ב- GitHub.