DispatcherServlet ו- web.xml ב- Spring Boot

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

ה DispatcherServlet הוא הבקר הקדמי ביישומי רשת אביב. הוא משמש ליצירת יישומי אינטרנט ושירותי REST באביב MVC. ביישום אינטרנט מסורתי של אביב, סרוולט זה מוגדר ב- web.xml קוֹבֶץ.

במדריך זה נעביר קוד מ- a web.xml קובץ ל DispatcherServlet ביישום אתחול האביב. כמו כן, נמפה לְסַנֵן, סרוולט, ו מַאֲזִין שיעורים מ web.xml ליישום Spring Boot.

2. תלות של Maven

ראשית, עלינו להוסיף את קפיץ-אתחול-רשת תלות Maven שלנו pom.xml קוֹבֶץ:

 org.springframework.boot spring-boot-starter-web 

3. DispatcherServlet

DispatcherServlet מקבל את כל בקשות ה- HTTP ומאציל אותן לשיעורי בקר.

לפני המפרט Servlet 3.x, DispatcherServlet יירשם ב web.xml קובץ ליישום MVC של Spring. מכיוון שמפרט Servlet 3.x, אנו יכולים לרשום servlets באמצעות תכנות ServletContainerInitializer.

בוא נראה DispatcherServlet תצורת דוגמה ב- web.xml קוֹבֶץ:

 משגר org.springframework.web.servlet.DispatcherServlet משגר / 

מגף האביב מספק את קפיץ-אתחול-רשת ספרייה לפיתוח יישומי אינטרנט באמצעות Spring MVC. אחד המאפיינים העיקריים של Spring Boot הוא תצורה אוטומטית. התצורה האוטומטית של Spring Boot רושמת ומגדירה את DispatcherServlet באופן אוטומטי. לכן, איננו צריכים לרשום את DispatcherServlet באופן ידני.

כברירת מחדל, ה- קפיץ-אתחול-רשת מגדיר סטרטר DispatcherServlet לדפוס כתובת האתר "/". לכן, איננו צריכים להשלים תצורה נוספת לאמור לעיל DispatcherServlet דוגמה ב- web.xml קוֹבֶץ. עם זאת, אנו יכולים להתאים אישית את דפוס כתובת האתר באמצעות server.servlet.* בתוך ה application.properties קוֹבֶץ:

server.servlet.context-path = / demo spring.mvc.servlet.path = / baeldung

בהתאמות אישיות אלה, DispatcherServlet מוגדר לטפל בדפוס כתובת האתר / ביילדונג והשורש הקשר נתיב יהיה /הַדגָמָה. לכן, DispatcherServlet מקשיב ב // localhost: 8080 / demo / baeldung /.

4. תצורת יישום

יישומי אינטרנט באביב MVC משתמשים ב- web.xml קובץ כקובץ מתאר פריסה. כמו כן, הוא מגדיר מיפויים בין נתיבי כתובת אתר לבין סרוולטים ב- web.xml קוֹבֶץ.

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

כשאנחנו רוצים לעבור מ- MVC Spring מסורתי ליישום Spring Boot מודרני, איך נוכל להעביר את זה web.xml לאפליקציית Spring Boot חדשה? ביישומי Spring Boot, אנו יכולים להוסיף מושגים אלה בכמה דרכים.

4.1. רישום א לְסַנֵן

בואו ניצור מסנן על ידי יישום ה- לְסַנֵן מִמְשָׁק:

המחלקה הציבורית @Component מיישמת את FilterFilter {לוגר לוגר = LoggerFactory.getLogger (CustomFilter.class); @Override public void init (FilterConfig filterConfig) זורק ServletException {} @Override public void doFilter (בקשת ServletRequest, ServletResponse, שרשרת FilterChain) זורק IOException, ServletException {logger.info ("CustomFilter מופעל"); chain.doFilter (בקשה, תגובה); } // שיטות אחרות}

ללא מגף קפיצי, היינו מגדירים את שלנו CustomFilterבתוך ה web.xml קוֹבֶץ:

 customFilter CustomFilter customFilter / * 

כדי שאביב אתחול יוכל לזהות פילטר, היינו רק צריכים להגדיר אותו כשעועית עם @רְכִיב ביאור.

4.2. רישום א סרוולט

בואו נגדיר servlet על ידי הרחבת ה- HttpServlet מעמד:

מחלקה ציבורית CustomServlet מרחיבה את HttpServlet {Logger logger = LoggerFactory.getLogger (CustomServlet.class); @Override מוגן בטל doGet (HttpServletRequest req, HttpServletResponse resp) זורק ServletException, IOException {logger.info ("שיטת CustomServlet doGet () מופעלת"); super.doGet (req, resp); } @Override מוגן בטל doPost (HttpServletRequest req, HttpServletResponse resp) זורק ServletException, IOException {logger.info ("שיטת CustomServlet doPost () מופעלת"); super.doPost (req, resp); }} 

ללא מגף קפיצי, היינו מגדירים את שלנו CustomServlet בתוך ה web.xml קוֹבֶץ:

 customServlet CustomServlet customServlet / servlet 

ביישום Spring Boot, ה- servlet רשום כ- Spring @אפונה או על ידי סריקת ה- @WebServlet הערות מחלקות עם מיכל מוטבע.

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

אז נגדיר CustomServlet כשעועית עם ServletRegistrationBean מעמד:

@Bean ציבור ServletRegistrationBean customServletBean () {ServletRegistrationBean שעועית = חדש ServletRegistrationBean (CustomServlet חדש (), "/ servlet"); שעועית להחזיר; } 

4.3. רישום א מַאֲזִין

בואו נגדיר מאזין על ידי הרחבת ה- ServletContextListener מעמד:

מחלקה ציבורית CustomListener מיישמת את ServletContextListener {לוגר לוגר = LoggerFactory.getLogger (CustomListener.class); @Override public void contextInitialized (ServletContextEvent sce) {logger.info ("CustomListener is initialized"); } @Override context public voidDestroyed (ServletContextEvent sce) {logger.info ("CustomListener נהרס"); }} 

ללא מגף קפיצי, היינו מגדירים את שלנו CustomListener בתוך ה web.xml קוֹבֶץ:

 CustomListener 

כדי להגדיר מאזין ביישום Spring Boot, אנו יכולים להשתמש ב- @אפונה אוֹ @WebListener ביאורים.

עם האביב @אפונה גישה, אנו יכולים להשתמש ב- ServletListenerRegistrationBean בכיתה כדי לרשום את מַאֲזִין.

אז בואו נגדיר CustomListener כשעועית עם ServletListenerRegistrationBeanמעמד:

@Bean ציבור ServletListenerRegistration שעועית CustomListenerBean () {ServletListenerRegistrationBean שעועית = חדש ServletListenerRegistrationBean (); bean.setListener (CustomListener חדש ()); שעועית להחזיר; }

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

2020-09-28 08: 50: 30.872 INFO 19612 --- [main] c.baeldung.demo.listener.CustomListener: CustomListener מאותחל

5. מסקנה

במדריך מהיר זה ראינו כיצד להגדיר DispatcherServlet ו web.xml אלמנטים כולל לְסַנֵן, סרוולט, ו מַאֲזִין ביישום אתחול האביב. וכמו תמיד, ניתן למצוא את קוד המקור עבור הדוגמה לעיל ב- GitHub.


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