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.