יישום אינטרנט של Java ללא web.xml

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

במדריך זה אנו יוצרים יישום אינטרנט של Java באמצעות Servlet 3.0+.

נבחן שלוש הערות - @WebServlet, @WebFilter, ו @WebListener זה יכול לעזור לנו לנקות את שלנו web.xml קבצים.

2. התלות של Maven

על מנת להשתמש בהערות חדשות אלה, עלינו לכלול את ה- javax.servlet-api תלות:

 javax.servlet javax.servlet-api 4.0.1 

3. תצורה מבוססת XML

לפני Servlet 3.0, היינו מגדירים יישום אינטרנט של Java ב- web.xml קוֹבֶץ:

  com.baeldung.servlets3.web.listeners.RequestListener uppercaseServlet com.baeldung.servlets3.web.servlets.UppercaseServlet uppercaseServlet / uppercase emptyParamFilter com.baeldung.servlets3.web.filters.EmptyParamFilter 

נתחיל להחליף כל קטע תצורה בהערות המתאימות שהוצגו ב- Servlet 3.0.

4. סרבלים

JEE 6 נשלח עם Servlet 3.0 המאפשר לנו להשתמש בהערות להגדרות סרוולט, ולמזער את השימוש ב- web.xml קובץ ליישום אינטרנט.

לדוגמא, אנו יכולים להגדיר סרוולט ולחשוף אותו באמצעות ה- @WebServlet ביאור

בואו נגדיר servlet אחד עבור דפוס ה- URL / אותיות רישיות. זה יהפוך את הערך של ה- קֶלֶט פרמטר בקשה לרישיות:

@WebServlet (urlPatterns = "/ באותיות גדולות", שם = "uppercaseServlet") מחלקה ציבורית UpercaseServlet מרחיב HttpServlet {public void doGet (HttpServletRequest בקשה, HttpServletResponse תגובה) זורק IOException {String inputString = בקשה. ; PrintWriter out = response.getWriter (); out.println (inputString); }}

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

עם ה @WebServlet ביאור, אנו מחליפים את סרוולט ו מיפוי סרוולט חלקים מה web.xml קוֹבֶץ.

5. פילטרים

א לְסַנֵן הוא אובייקט המשמש ליירוט בקשות או תגובות, המבצע משימות לפני או לאחר עיבוד.

אנו יכולים להגדיר מסנן באמצעות ה- @WebFilter ביאור.

בואו ניצור מסנן כדי לבדוק אם ה- קֶלֶט פרמטר הבקשה קיים:

@WebFilter (urlPatterns = "/ באותיות גדולות") class public EmptyParamFilter מיישם את המסנן {@Override public void doFilter (ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) זורק IOException, ServletException {String inputString = servet; אם (inputString! = null && inputString.matches ("[A-Za-z0-9] +")) {filterChain.doFilter (servletRequest, servletResponse); } אחר {servletResponse.getWriter (). println ("פרמטר קלט חסר"); }} // יישומים לשיטות אחרות}

עם ה @WebFilter ביאור, אנו מחליפים את לְסַנֵן ו מיפוי פילטר חלקים מה web.xml קוֹבֶץ.

6. מאזינים

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

כמו בעבר, אנו יכולים להגדיר מאזין עם ה- @WebListener ביאור.

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

המחלקה הציבורית @WebListener RequestListener מיישמת את ServletRequestListener {@Override public void requestDestroyed (ServletRequestEvent event) {HttpServletRequest request = (HttpServletRequest) event.getServletRequest (); אם (! request.getServletPath (). שווה ("/ counter")) {ServletContext context = event.getServletContext (); context.setAttribute ("מונה", (int) context.getAttribute ("מונה") + 1); }} // יישומים לשיטות אחרות}

שים לב שאיננו כולל את הבקשות לדפוס כתובת האתר /דֶלְפֵּק.

עם ה @WebListener ביאור, אנו מחליפים את מַאֲזִין קטע מה web.xml קוֹבֶץ.

7. לבנות ולהפעיל

עבור הבאים הבאים, שים לב כי לבדיקה, יש servlet שני שהוספנו עבור ה- /דֶלְפֵּק נקודת סיום שפשוט מחזירה את דֶלְפֵּק תכונת הקשר servlet.

אז בואו נשתמש טומקט כשרת היישומים.

אם אנו משתמשים בגרסה של תוסף המלחמה לפני 3.1.0, נצטרך להגדיר את הנכס failOnMissingWebXml ל שֶׁקֶר.

עכשיו, אנחנו יכולים לפרוס את שלנו .מִלחָמָה קובץ ל טומקט, וגישה לשרתים שלנו.

בואו ננסה את שלנו / אותיות רישיות נקודת סיום:

תלתל // localhost: 8080 / spring-mvc-java / אותיות רישיות? input = texttouppercase TEXTTOUPPERCASE

ועלינו גם לראות כיצד הטיפול בשגיאות שלנו נראה:

תלתל // localhost: 8080 / spring-mvc-java / אותיות גדולות חסר פרמטר קלט

ולסיום, מבחן מהיר של המאזין שלנו:

תלתל // localhost: 8080 / spring-mvc-java / counter דלפק בקשה: 2

8. עדיין נדרש XML

אפילו, עם כל התכונות שהוצגו ב- Servlet 3.0, ישנם מקרי שימוש שבהם עדיין נצטרך web.xml קובץ, ביניהם:

  • איננו יכולים להגדיר את סדר הסינון באמצעות הערות אנחנו עדיין צריכים את קטע אם יש לנו מספר פילטרים שאנחנו צריכים ליישם בסדר מסוים
  • כדי להגדיר פסק זמן של הפעלה, אנחנו עדיין צריכים להשתמש ב- סָעִיף
  • אנחנו עדיין צריכים את אלמנט לאישור מבוסס מכולה
  • וכדי לציין קבצי קבלת פנים, עדיין נצטרך סָעִיף

לחלופין, Servlet 3.0 הציג גם כמה תמיכה פרוגרמטית באמצעות ServletContainerInitializerגם זה יכול גם להשלים חלק מהפערים הללו.

9. מסקנה

במדריך זה, הגדרנו יישום אינטרנט Java ללא שימוש ב- web.xml להגיש את ההערות המקבילות.

כמו תמיד, את קוד המקור של הדרכה זו ניתן למצוא ב- GitHub. בנוסף, ניתן למצוא ב- GitHub יישום המשתמש בקובץ web.xml המסורתי.

לקבלת גישה מבוססת אביב, עבור אל הדרכה web.xml לעומת Initialisator עם Spring.


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