מבוא לשטיח אפאצ'י

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

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

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

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

2. שטיח אפאצ'י

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

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

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

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

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

3. התקנה

שטיח אפאצ'י דורש סט כלים פשוט ליצירת יישום אינטרנט:

  • Java 1.6 ואילך
  • כלי בנייה (Maven או Gradle)
  • IDE (Eclipse או IntelliJ)
  • שרת יישומים (Tomcat או Jetty)

במדריך זה נשתמש בשילוב של Java 8, Maven, Eclipse ו- Jetty Server.

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

ארכיטיפ $ mvn: צור -DarchetypeCatalog = // tapestry.apache.org

לחלופין, אם יש לנו פרויקט קיים, נוכל פשוט להוסיף את התלות של ליבת השטיח של Maven ל pom.xml:

 org.apache.tapestry שטיח ליבת 5.4.5 

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

מזח $ mvn: לרוץ

כברירת מחדל, היישום יהיה נגיש בכתובת localhost: 8080 / apache-tapestry:

4. מבנה הפרויקט

בואו לחקור את פריסת הפרויקט שנוצרה על ידי Apache Tapestry:

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

שיעורי Java ממוקמים ב src / main / java ומסווג כ רכיבים, עמודים, ו שירותים.

כְּמוֹ כֵן, src / main / resources להחזיק את התבניות שלנו (בדומה לקבצי HTML) - אלה מכילים .tml סיומת.

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

ה src / main / webapp הספרייה מכילה משאבים כמו תמונות, גיליונות סגנונות וקבצי JavaScript. באופן דומה, קבצי בדיקה ממוקמים src / test.

אחרון, src / אתר יכיל את קבצי התיעוד.

לקבלת רעיון טוב יותר, בואו נסתכל על מבנה הפרויקט שנפתח ב- Eclipse IDE:

5. ביאורים

בואו נדון בכמה הערות שימושיות המסופקות על ידי Apache Tapestry לשימוש יומיומי. בהמשך, נשתמש בהערות אלה ביישומים שלנו.

5.1. @לְהַזרִיק

ה @לְהַזרִיק ביאור זמין ב הערות org.apache.tapestry5.ioc. חבילה ומספק דרך קלה להזרים תלות בשיעורי Java.

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

5.2. @InjectPage

זמין ב org.apache.tapestry5.annotations חבילה, ה @InjectPage ביאור מאפשר לנו להזרים דף לרכיב אחר. כמו כן, הדף המוזרק הוא תמיד נכס לקריאה בלבד.

5.3. @InjectComponent

באופן דומה, ה @InjectComponent ביאור מאפשר לנו להזריק רכיב המוגדר בתבנית.

5.4. @עֵץ

ה @עֵץ ביאור זמין ב org.apache.tapestry5.annotations חבילה והוא שימושי כדי לאפשר רישום ברמת DEBUG בכל שיטה. זה רושם כניסה ויציאה של שיטה, יחד עם ערכי פרמטרים.

5.5. @תכונה

זמין ב org.apache.tapestry5.annotations חבילה, ה @תכונה ביאור מסמן שדה כנכס. יחד עם זאת, זה יוצר אוטומטית גטרים וקובעים עבור הנכס.

5.6. @פָּרָמֶטֶר

באופן דומה, ה @פָּרָמֶטֶר ביאור מציין ששדה הוא פרמטר רכיב.

6. עמוד

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

ראשית נגדיר מחלקת Java בית בתוך ה עמודים ספריה ב src / main / java:

בית בכיתה ציבורית {}

6.1. תבנית

לאחר מכן ניצור תואם Home.tml תבנית ב- עמודים ספריה תחת src / main / resources.

קובץ עם הסיומת .tml (שפת הסימון של השטיח) דומה לקובץ HTML / XHTML עם תגי XML שמספקת השטיח של אפאצ'י.

למשל, בואו נסתכל על ה- Home.tml תבנית:

  אפאצ'י-שטיח בית 

וואלה! פשוט על ידי הפעלה מחדש של שרת המזח, אנו יכולים לגשת אל בית דף ב localhost: 8080 / apache-tapestry / home:

6.2. תכונה

בואו נבדוק כיצד לתכנן נכס ב- בית עמוד.

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

@Property פרטי מחרוזת appName = "apache-tapestry"; תאריך ציבורי getCurrentTime () {החזר תאריך חדש (); }

כדי לדקלם את שם האפליקציה נכס על בית בדף, אנחנו יכולים פשוט להשתמש $ {appName}.

באופן דומה, אנו יכולים לכתוב $ {currentTime} כדי לגשת ל getCurrentTime שיטה מהדף.

6.3. לוקליזציה

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

למשל, ניצור א home.properties קובץ ב- עמודים מדריך עבור בית דף עם הודעה מקומית:

introMsg = ברוך הבא להדרכת שטיח השטיח של אפאצ'י

מאפייני ההודעה שונים ממאפייני Java.

מאותה סיבה, שם המפתח עם הוֹדָעָה הקידומת משמשת לעיבוד מאפיין של הודעה - למשל, $ {message: introMsg}.

6.4. רכיב פריסה

בואו נגדיר רכיב פריסה בסיסי על ידי יצירת ה- פריסה. ג'אווה מעמד. נשמור את הקובץ ב- רכיבים ספריה ב src / main / java:

פריסה בכיתה ציבורית {@Property @Parameter (חובה = true, defaultPrefix = BindingConstants.LITERAL) כותרת מחרוזת פרטית; }

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

לאחר מכן נכתוב קובץ תבנית מתאים Layout.tml בתוך ה רכיבים ספריה ב src / main / resources:

  $ {title} 

© החברה שלך

עכשיו, בואו נשתמש ב- מַעֲרָך על בית עמוד:

$ {message: introMsg}

$ {currentTime}

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

הנה ה t: סוג יקבע את מַעֲרָך על בית עמוד. וה t: גוף אלמנט יכניס את תוכן הדף.

בואו נסתכל על ה- בית דף עם הפריסה:

7. טופס

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

כפי שכבר נחקר, ניצור תחילה מחלקת Java התחברות:

כניסה ציבורית בכיתה {// ... @InjectComponent פרטי כניסה לטופס; דוא"ל מחרוזת פרטי @Property; סיסמת מחרוזת פרטית @Property; }

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

לאחר מכן, בואו ניצור תבנית מתאימה login.tml:

אנא היכנס

כעת, אנו יכולים לגשת אל התחברות דף ב localhost: 8080 / apache-tapestry / login:

8. אימות

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

השיטה המובנית עוקבת אחר המוסכמה של האירוע ושם הרכיב. למשל, השיטה onValidationFromLogin יאמת את התחברות רְכִיב.

כמו כן, שיטות כמו onSuccessFromLogin ו onFailureFromLogin מיועדים לאירועי הצלחה וכישלון בהתאמה.

אז בואו נוסיף את השיטות המובנות האלה ל- התחברות מעמד:

כניסה ציבורית בכיתה {// ... void onValidateFromLogin () {if (email == null) System.out.println ("Email is null); if (password == null) System.out.println (" Password is null ); } אובייקט onSuccessFromLogin () {System.out.println ("ברוך הבא! כניסה מוצלחת"); חזור Home.class; } בטל onFailureFromLogin () {System.out.println ("אנא נסה שוב עם אישורים נכונים"); }}

9. התראות

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

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

כניסה בכיתה ציבורית {// ... @Inject private AlertManager alertManager; בטל onValidateFromLogin () {if (דוא"ל == null || סיסמה == null) {alertManager.error ("דוא"ל / סיסמה הוא ריק"); login.recordError ("האימות נכשל"); // כשל בהגשה בטופס}} אובייקט onSuccessFromLogin () {alertManager.success ("ברוך הבא! הכניסה מוצלחת"); חזור Home.class; } בטל onFailureFromLogin () {alertManager.error ("אנא נסה שוב עם אישורים נכונים"); }}

בואו נראה את ההתראות בפעולה כאשר הכניסה נכשלת:

10. אייאקס

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

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

ראשית, נזריק את המופע של ה- AjaxResponseRenderer ו לַחסוֹם רכיב ב בית מעמד. לאחר מכן ניצור שיטה onCallAjax לעיבוד שיחת אייאקס:

בית כיתה ציבורי {// .... @Inject private AjaxResponseRenderer ajaxResponseRenderer; @ הזריק חסום פרטי ajaxBlock; @Log בטל onCallAjax () {ajaxResponseRenderer.addRender ("ajaxZone", ajaxBlock); }}

כמו כן, עלינו לבצע כמה שינויים בתוכנו Home.tml.

ראשית, נוסיף את eventLink להפעיל את onCallAjax שיטה. לאחר מכן, נוסיף א אֵזוֹר אלמנט עם מזהה ajaxZone כדי לתת את תגובת אייאקס.

אחרון, עלינו להחזיק רכיב בלוק שיוזרק ל- בית כיתה וניתנת כתגובת אייאקס:

התקשר לאייאקס


הועבר באמצעות אייאקס

השעה הנוכחית היא: $ {currentTime}

בואו נסתכל על המעודכן בית עמוד:

לאחר מכן נוכל ללחוץ על כפתור Call Ajax ולראות את ajaxResponseRenderer בִּפְעוּלָה:

11. כניסה

כדי לאפשר את תכונת הרישום המובנית, המופע של ה- כּוֹרֵת עֵצִים נדרש להזריק. לאחר מכן אנו יכולים להשתמש בו כדי להיכנס בכל רמה כמו TRACE, DEBUG ו- INFO.

אז בואו נעשה את השינויים הנדרשים ב- בית מעמד:

בית בכיתה ציבורית {// ... @ הזן לוגר לוגר פרטי; בטל onCallAjax () {logger.info ("שיחת Ajax"); ajaxResponseRenderer.addRender ("ajaxZone", ajaxBlock); }}

כעת, כשאנו לוחצים על כפתור Call Ajax, כּוֹרֵת עֵצִים ייכנס ברמת המידע:

דפי [INFO]. שיחת Ajax הביתה 

12. מסקנה

במאמר זה, בחנו את מסגרת האינטרנט של אפאצ'י שטיח.

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

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

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

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


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