Webová aplikácia Java bez súboru web.xml

1. Prehľad

V tomto tutoriáli vytvárame webovú aplikáciu Java pomocou Servletu 3.0+.

Pozrime sa na tri anotácie - @WebServlet, @WebFiltera @WebListener - to nám môže pomôcť vylepšiť naše web.xml súbory.

2. Mavenova závislosť

Aby sme mohli použiť tieto nové anotácie, musíme zahrnúť javax.servlet-api závislosť:

 javax.servlet javax.servlet-api 4.0.1 

3. Konfigurácia založená na XML

Pred Servletom 3.0 sme konfigurovali webovú aplikáciu Java v a web.xml spis:

  com.baeldung.servlets3.web.listeners.RequestListener uppercaseServlet com.baeldung.servlets3.web.servlets.UppercaseServlet uppercaseServlet / uppercase emptyParamFilter com.baeldung.servlets3.web.filters.EmptyParamFilter emptyParamFilter / veľké písmená 

Začnime nahradiť každú konfiguračnú časť príslušnými anotáciami zavedenými v Servlete 3.0.

4. Servlety

JEE 6 dodávaný so servletom 3.0, ktorý nám umožňuje používať anotácie pre definície servletu, minimalizujúce použitie web.xml súbor pre webovú aplikáciu.

Napríklad môžeme definovať servlet a vystaviť ho pomocou @WebServlet anotácia

Definujme jeden servlet pre vzor adresy URL /veľké písmená. Transformuje hodnotu súboru vstup parameter požiadavky na veľké písmená:

@WebServlet (urlPatterns = "/ uppercase", name = "uppercaseServlet") verejná trieda UppercaseServlet rozširuje HttpServlet {public void doGet (požiadavka HttpServletRequest, odpoveď HttpServletResponse) hodí IOException {String inputString = request.getParameter). ; PrintWriter out = response.getWriter (); out.println (inputString); }}

Všimnite si, že sme definovali názov pre servlet (uppercaseServlet) na ktoré sa teraz môžeme odvolávať. Toto využijeme v ďalšej časti.

Vďaka @WebServlet anotáciu, nahrádzame servlet a mapovanie servletu úseky z web.xml spis.

5. Filtre

A Filtrovať je objekt používaný na zachytávanie požiadaviek alebo odpovedí, vykonávanie úloh pred alebo po spracovaní.

Môžeme definovať filter pomocou @WebFilter anotácia.

Vytvorme filter a skontrolujeme, či vstup parameter požiadavky je prítomný:

@WebFilter (urlPatterns = "/ uppercase") verejná trieda EmptyParamFilter implementuje filter {@Override public void doFilter (ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) hodí IOException, ServletException = "Stlet inputString =" String inputString = "String inputString =" if (inputString! = null && inputString.matches ("[A-Za-z0-9] +")) {filterChain.doFilter (servletRequest, servletResponse); } else {servletResponse.getWriter (). println ("Chýbajúci vstupný parameter"); }} // implementácie pre ďalšie metódy}

Vďaka @WebFilter anotáciu, nahrádzame filter a mapovanie filtra úseky z web.xml spis.

6. Poslucháči

Často budeme musieť spustiť akcie založené na určitých udalostiach. Tu prichádzajú na pomoc poslucháči. Tieto objekty budú počúvať udalosť a vykonajú správanie, ktoré zadáme.

Rovnako ako predtým môžeme poslucháča definovať pomocou @WebListener anotácia.

Vytvorme poslucháča, ktorý sa počíta vždy, keď vykonáme požiadavku na server. Budeme realizovať ServletRequestListener, počúvam pre ServletRequestEvents:

@WebListener verejná trieda RequestListener implementuje ServletRequestListener {@Override public void requestDestroyed (ServletRequestEvent event) {HttpServletRequest request = (HttpServletRequest) event.getServletRequest (); if (! request.getServletPath (). equals ("/ counter")) {ServletContext context = event.getServletContext (); context.setAttribute ("counter", (int) context.getAttribute ("counter") + 1); }} // implementácie pre ďalšie metódy}

Upozorňujeme, že vylučujeme žiadosti o vzor adresy URL / pult.

Vďaka @WebListener anotáciu, nahrádzame poslucháč oddiel z web.xml spis.

7. Zostavte a spustite

Pre tých, ktorí nasledujú, nezabudnite, že na testovanie je k dispozícii druhý servlet / pult koncový bod, ktorý jednoducho vráti pult atribút kontextu servletu.

Takže poďme Tomcat ako aplikačný server.

Ak používame verziu maven-war-plugin pred 3.1.0 budeme musieť nastaviť vlastnosť failOnMissingWebXml do nepravdivé.

Teraz môžeme nasadiť naše .vojna podať do Tomcata prístup k našim servletom.

Vyskúšajme naše /veľké písmená koncový bod:

curl // localhost: 8080 / spring-mvc-java / veľké písmená? input = texttouppercase TEXTTOUPPERCASE

Mali by sme tiež vidieť, ako vyzerá naša manipulácia s chybami:

curl // localhost: 8080 / spring-mvc-java / veľké písmená Chýbajúci vstupný parameter

A na záver rýchly test nášho poslucháča:

curl // localhost: 8080 / spring-mvc-java / counter Počítadlo žiadostí: 2

8. XML je stále potrebný

Aj keď sú všetky funkcie predstavené v servlete 3.0, existujú niektoré prípady použitia, keď stále budeme potrebovať web.xml súbor, medzi nimi:

  • Poradie filtra nemôžeme definovať pomocou anotácií - stále potrebujeme časť, ak máme viac filtrov, ktoré musíme použiť v konkrétnom poradí
  • Ak chcete definovať časový limit relácie, stále musíme použiť znak oddiel
  • Stále potrebujeme prvok pre autorizáciu na základe kontajnera
  • A na špecifikáciu uvítacích súborov budeme stále potrebovať oddiel

Alebo niektoré z nich predstavil aj Servlet 3.0 programová podpora prostredníctvom ServletContainerInitializer, ktoré tiež môžu vyplniť niektoré z týchto medzier.

9. Záver

V tomto výučbe sme nakonfigurovali webovú aplikáciu Java bez použitia súboru web.xml súboru vykonaním ekvivalentných anotácií.

Zdrojový kód tohto tutoriálu nájdete ako vždy na GitHub. Aplikáciu využívajúcu tradičný súbor web.xml navyše nájdete aj na GitHub.

Pre jarný prístup prejdite na náš tutoriál web.xml vs. Initializer s jarom.


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