DispatcherServlet és web.xml a Spring Boot alkalmazásban

1. Áttekintés

A DispatcherServlet a tavaszi webalkalmazások első vezérlője. Webalkalmazások és REST szolgáltatások létrehozására használják a tavaszi MVC-ben. Egy hagyományos tavaszi webalkalmazásban ezt a szervletet a web.xml fájl.

Ebben az oktatóanyagban áttelepítjük a kódot a web.xml fájlba DispatcherServlet egy Spring Boot alkalmazásban. Továbbá feltérképezzük Szűrő, Servlet, és Hallgató osztályok tól web.xml a Spring Boot alkalmazáshoz.

2. Maven-függőség

Először hozzá kell adnunk a tavasz-boot-starter-web Maven függőség a mi pom.xml fájl:

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

3. DispatcherServlet

DispatcherServlet megkapja az összes HTTP kérést és delegálja őket vezérlő osztályokba.

A Servlet 3.x specifikáció előtt DispatcherServlet bejegyeznék a web.xml fájl egy tavaszi MVC alkalmazáshoz. A Servlet 3.x specifikáció óta programozottan regisztrálhatjuk a szervleteket ServletContainerInitializer.

Lássuk a DispatcherServlet példa konfiguráció a web.xml fájl:

 diszpécser org.springframework.web.servlet.DispatcherServlet diszpécser / 

A Spring Boot biztosítja a tavasz-boot-starter-web könyvtár a webes alkalmazások fejlesztéséhez a Spring MVC segítségével. A Spring Boot egyik fő jellemzője az automatikus konfiguráció. A Spring Boot automatikus konfiguráció regisztrálja és konfigurálja a DispatcherServlet automatikusan. Ezért nem kell regisztrálnunk a DispatcherServlet manuálisan.

Alapértelmezés szerint a tavasz-boot-starter-web starter konfigurálja DispatcherServlet a „/” URL-mintára. Tehát a fentiekhez nem kell további konfigurációt elvégeznünk DispatcherServlet példa a web.xml fájl. Az URL-mintát azonban testreszabhatjuk a segítségével szerver.szervlet.* ban,-ben alkalmazás.tulajdonságok fájl:

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

Ezekkel a testreszabásokkal DispatcherServlet úgy van konfigurálva, hogy kezelje az URL-mintát / baeldung és a gyökér contextPath lesz /demó. Így, DispatcherServlet itt hallgat // localhost: 8080 / demo / baeldung /.

4. Az alkalmazás konfigurálása

A tavaszi MVC webalkalmazások a web.xml fájl telepítési leíró fájlként. Ezenkívül meghatározza az URL-elérési utak és a web.xml fájl.

A Spring Boot esetében ez már nem így van. Ha szükségünk van egy speciális szűrőre, regisztrálhatjuk Java osztály konfigurációban. A web.xml fájl tartalmaz szűrőket, szervleteket és hallgatókat.

Amikor át akarunk térni egy hagyományos tavaszi MVC-ről egy modern Spring Boot alkalmazásra, hogyan portálhatjuk át web.xml egy új Spring Boot alkalmazáshoz? A Spring Boot alkalmazásokban ezeket a fogalmakat többféleképpen is hozzáadhatjuk.

4.1. Regisztráció a Szűrő

Hozzunk létre egy szűrőt a Szűrő felület:

@Component public class CustomFilter végrehajtja a {Logger logger = LoggerFactory.getLogger (CustomFilter.class) szűrőt; A @Orride public void init (FilterConfig filterConfig) a ServletException dobja el. chain.doFilter (kérés, válasz); } // egyéb módszerek}

Tavaszi csomagtartó nélkül konfigurálnánk a sajátunkat CustomFilterban,-ben web.xml fájl:

 customFilter CustomFilter customFilter / * 

Annak érdekében, hogy a Spring Boot képes legyen felismerni egy szűrőt, csak azt kellett definiálnunk, mint egy babot a @Összetevő annotáció.

4.2. Regisztráció a Servlet

Definiáljunk egy servletet a HttpServlet osztály:

public class CustomServlet kiterjeszti a HttpServlet {Logger logger = LoggerFactory.getLogger (CustomServlet.class); @Orride protected void doGet (HttpServletRequest req, HttpServletResponse resp) dobja a ServletException, IOException {logger.info ("A CustomServlet doGet () metódust meghívjuk"); super.doGet (req, ill); } @Orride protected void doPost (HttpServletRequest req, HttpServletResponse resp) dobja a ServletException, IOException {logger.info ("A CustomServlet doPost () metódust meghívjuk"); super.doPost (req, ill); }} 

Tavaszi csomagtartó nélkül konfigurálnánk a sajátunkat CustomServlet ban,-ben web.xml fájl:

 customServlet CustomServlet customServlet / szervlet 

A Spring Boot alkalmazásban a szervlet vagy Spring néven van regisztrálva @Bab vagy a @WebServlet bejegyzett osztályok beágyazott tárolóval.

A tavasszal @Bab megközelítés, használhatjuk a ServletRegistrationBean osztály regisztrálja a szervletet.

Tehát meghatározzuk CustomServlet babként az ServletRegistrationBean osztály:

@Bean public ServletRegistrationBean customServletBean () {ServletRegistrationBean bean = new ServletRegistrationBean (új CustomServlet (), "/ servlet"); visszatérő bab; } 

4.3. Regisztráció a Hallgató

Határozzuk meg a hallgatót a ServletContextListener osztály:

public class CustomListener megvalósítja a ServletContextListener {Logger logger = LoggerFactory.getLogger (CustomListener.class); @Orride public void contextInitialized (ServletContextEvent sce) {logger.info ("A CustomListener inicializálva van"); } @Orride public void contextDestroyed (ServletContextEvent sce) {logger.info ("A CustomListener megsemmisült"); }} 

Tavaszi csizma nélkül konfigurálnánk CustomListener ban,-ben web.xml fájl:

 CustomListener 

A Spring Boot alkalmazásban a hallgató definiálásához használhatjuk a @Bab vagy @WebListener annotációk.

A tavasszal @Bab megközelítés, használhatjuk a ServletListenerRegistrationBean osztály regisztrálni a Hallgató.

Tehát, definiáljuk CustomListener babként a ServletListenerRegistrationBeanosztály:

@Bean public ServletListenerRegistrationBean customListenerBean () {ServletListenerRegistrationBean bean = new ServletListenerRegistrationBean (); bean.setListener (új CustomListener ()); visszatérő bab; }

Az alkalmazás elindításakor ellenőrizhetjük a napló kimenetét, hogy megerősítsük, hogy a hallgató inicializálása sikeres volt:

2020-09-28 08: 50: 30.872 INFO 19612 --- [main] c.baeldung.demo.listener.CustomListener: A CustomListener inicializálva van

5. Következtetés

Ebben a gyors bemutatóban láttuk, hogyan kell meghatározni DispatcherServlet és web.xml elemek, köztük szűrő, servlet, és hallgató egy Spring Boot alkalmazásban. És mint mindig, a fenti példa forráskódja megtalálható a GitHubon.


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