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.