Java webalkalmazás web.xml nélkül
1. Áttekintés
Ebben az oktatóanyagban Java webalkalmazást hozunk létre a Servlet 3.0+ használatával.
Megnézünk három jegyzetet - @WebServlet, @WebFilter, és @WebListener - ez segíthet nekünk web.xml fájlokat.
2. A Maven-függőség
Ezen új kommentárok használatához be kell illesztenünk a javax.servlet-api függőség:
javax.servlet javax.servlet-api 4.0.1
3. XML alapú konfiguráció
A Servlet 3.0 előtt konfigurálunk egy Java webalkalmazást a web.xml fájl:
com.baeldung.servlets3.web.listeners.RequestListener uppercaseServlet com.baeldung.servlets3.web.servlets.UppercaseServlet uppercaseServlet / uppercase emptyParamFilter com.baeldung.servlets3.web.filters.EmptyParamFilter emptyParamFil
Kezdjük el az egyes konfigurációs szakaszok cseréjét a Servlet 3.0-ban bevezetett megfelelő jelölésekkel.
4. Servlet
A JEE 6 a Servlet 3.0-val együtt szállítva, amely lehetővé teszi számunkra, hogy annotációkat használjunk a servlet-definíciókhoz, minimalizálva a web.xml fájl egy webalkalmazáshoz.
Például definiálhatunk egy szervletet, és a @WebServlet annotáció
Határozzunk meg egy szervletet az URL-mintához /nagybetűs. Átalakítja a bemenet kérjen paramétert nagybetűvé:
@WebServlet (urlPatterns = "/ uppercase", name = "uppercaseServlet") public class ; PrintWriter out = response.getWriter (); out.println (inputString); }}
Ne feledje, hogy definiáltunk egy nevet a szervletnek (nagybetűServlet) hogy most hivatkozhatunk. Ezt a következő szakaszban fogjuk felhasználni.
A ... val @WebServlet kommentár, kicseréljük a servlet és servlet feltérképezése szakaszok a web.xml fájl.
5. Szűrők
A Szűrő olyan objektum, amelyet kérések vagy válaszok lehallgatására használnak, elő- vagy utófeldolgozási feladatokat végeznek.
Szűrőt definiálhatunk a @WebFilter annotáció.
Hozzunk létre egy szűrőt annak ellenőrzésére, hogy a bemenet kérés paraméter jelen van:
Az @WebFilter (urlPatterns = "/ uppercase") public class EmptyParamFilter megvalósítja a (z) {@Override public void doFilter (ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) szűrőt: IOException, ServletException if (inputString! = null && inputString.matches ("[A-Za-z0-9] +")) {filterChain.doFilter (servletRequest, servletResponse); } else {servletResponse.getWriter (). println ("Hiányzó bemeneti paraméter"); }} // implementációk más módszerekhez}
A ... val @WebFilter kommentár, kicseréljük a szűrő és szűrő-leképezés szakaszok a web.xml fájl.
6. Hallgatók
Bizonyos események alapján gyakran kell végrehajtanunk műveleteket. Itt jönnek a hallgatók a segítségükre. Ezek az objektumok figyelni fognak egy eseményt, és végrehajtják az általunk megadott viselkedést.
A korábbiakhoz hasonlóan meghatározhatunk egy hallgatót a @WebListener annotáció.
Hozzunk létre egy figyelőt, amely minden alkalommal számít, amikor kérést teljesítünk a szervernek. Meg fogjuk valósítani ServletRequestListener, hallgat ServletRequestEvents:
A @WebListener public class RequestListener megvalósítja a ServletRequestListener {@Override public void requestDestroyed (ServletRequestEvent esemény) {HttpServletRequest request = (HttpServletRequest) event.getServletRequest (); if (! request.getServletPath (). egyenlő ("/ számláló")) {ServletContext context = esemény.getServletContext (); context.setAttribute ("számláló", (int) context.getAttribute ("számláló") + 1); }} // más módszerek megvalósításai}
Ne feledje, hogy kizárjuk az URL-mintára vonatkozó kéréseket /számláló.
A ... val @WebListener kommentár, kicseréljük a hallgató szakasz a web.xml fájl.
7. Építsd és futtasd
Azok számára, akik követik, vegye figyelembe, hogy a teszteléshez van egy második szervlet, amelyet hozzáadtunk a /számláló végpont, amely egyszerűen visszaadja a számláló szervlet kontextus attribútum.
Tehát, használjuk Kandúr mint alkalmazásszerver.
Ha a. Verzióját használjuk maven-war-plugin 3.1.0 előtt meg kell adnunk a tulajdonságot failOnMissingWebXml nak nek hamis.
Most bevethetjük a mi .háború fájlba Kandúr, és hozzáférés a szervletjeinkhez.
Próbáljuk ki a mi /nagybetűs végpont:
curl // localhost: 8080 / spring-mvc-java / uppercase? input = texttouppercase TEXTTOUPPERCASE
És azt is meg kell látnunk, hogy néz ki a hibakezelésünk:
curl // localhost: 8080 / spring-mvc-java / nagybetű hiányzik a bemeneti paraméter
És végül egy gyors teszt a hallgatónkról:
curl // localhost: 8080 / spring-mvc-java / counter Számláló kérése: 2
8. Még mindig szükség van XML-re
Még a Servlet 3.0-ban bevezetett összes funkcióval együtt is vannak olyan esetek, amikor még szükségünk lesz a web.xml fájl, többek között:
- Nem tudjuk meghatározni a szűrési sorrendet kommentárokkal - még mindig szükségünk van a szakasz, ha több szűrőnk van, amelyeket egy adott sorrendben kell alkalmaznunk
- A munkamenet időkorlátjának meghatározásához továbbra is a szakasz
- Még mindig szükségünk van a elem a konténer alapú engedélyezéshez
- Az üdvözlő fájlok megadásához továbbra is szükségünk lesz egy szakasz
Vagy a Servlet 3.0 is bemutatott néhányat programozási támogatás ServletContainerInitializer, amely szintén pótolhatja ezeket a hiányosságokat.
9. Következtetés
Ebben az oktatóanyagban egy Java webalkalmazást konfiguráltunk a web.xml fájl az egyenértékű kommentárok használatával.
Mint mindig, az oktatóanyag forráskódja is megtalálható a GitHubon. Ezenkívül a hagyományos web.xml fájlt használó alkalmazás megtalálható a GitHubon is.
Tavaszi alapú megközelítésért látogasson el a web.xml és a Initializer with Spring bemutatónkra.