Java web aplikacija bez web.xml

1. Pregled

U ovom uputstvu izrađujemo web aplikaciju Java koristeći Servlet 3.0+.

Pogledat ćemo tri bilješke - @WebServlet, @WebFilter, i @WebListener - to nam može pomoći da uništimo naše web.xml datoteke.

2. Ovisnost Mavena

Da bismo koristili ove nove napomene, moramo uključiti javax.servlet-api ovisnost:

 javax.servlet javax.servlet-api 4.0.1 

3. Konfiguracija temeljena na XML-u

Prije Servleta 3.0 konfigurirali bismo Java web aplikaciju u web.xml datoteka:

  com.baeldung.servlets3.web.listeners.RequestListener uppercaseServlet com.baeldung.servlets3.web.servlets.UppercaseServlet uppercaseServlet / uppercase emptyParamFilter com.baeldung.servlets3.web.filters.EmptyParamFilter.EmptyParamFilter. 

Počnimo zamijeniti svaki odjeljak za konfiguraciju odgovarajućim bilješkama uvedenim u Servlet 3.0.

4. Servleti

JEE 6 isporučuje se sa Servlet 3.0 koji nam omogućuje upotrebu bilješki za definicije servleta, smanjujući upotrebu a web.xml datoteka za web aplikaciju.

Na primjer, možemo definirati servlet i izložiti ga s @WebServlet bilješka

Definirajmo jedan servlet za obrazac URL-a / velikim slovima. To će transformirati vrijednost ulazni parametar zahtjeva za velika slova:

@WebServlet (urlPatterns = "/ velika slova", name = "uppercaseServlet") javna klasa UppercaseServlet proširuje HttpServlet {javni void doGet (HttpServletRequest zahtjev, HttpServletResponse odgovor) baca IOException {String inputgetsetser =) string (inputgetsetset). ; PrintWriter out = response.getWriter (); out.println (inputString); }}

Imajte na umu da smo definirali naziv za servlet (veliko slovo Servlet) na koje se sada možemo pozvati. To ćemo iskoristiti u sljedećem odjeljku.

Uz @WebServlet napomena, zamjenjujemo servlet i mapiranje servleta odjeljci iz web.xml datoteka.

5. Filteri

A filtar je objekt koji se koristi za presretanje zahtjeva ili odgovora, izvršavanje zadataka prije ili naknadne obrade.

Filtar možemo definirati pomoću @WebFilter bilješka.

Stvorimo filtar da provjerimo je li ulazni prisutan je parametar zahtjeva:

@WebFilter (urlPatterns = "/ uppercase") javna klasa EmptyParamFilter implementira filtar {@Override public void doFilter (ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) baca IOException, StringletPressPress; if (inputString! = null && inputString.matches ("[A-Za-z0-9] +")) {filterChain.doFilter (servletRequest, servletResponse); } else {servletResponse.getWriter (). println ("Nedostaje ulazni parametar"); }} // implementacije za druge metode}

Uz @WebFilter napomena, zamjenjujemo filtar i filtriranje-mapiranje odjeljci iz web.xml datoteka.

6. Slušatelji

Često ćemo trebati pokretati radnje na temelju određenih događaja. Tu slušatelji dolaze u pomoć. Ti će objekti osluškivati ​​događaj i izvršavati ponašanje koje odredimo.

Kao i ranije, slušatelja možemo definirati pomoću @WebListener bilješka.

Stvorimo slušatelj koji broji svaki put kada izvršimo zahtjev poslužitelju. Provest ćemo ServletRequestListener, slušajući ServletRequestEvents:

@WebListener javna klasa RequestListener implementira ServletRequestListener {@Override public void requestDestroyed (ServletRequestEvent event) {HttpServletRequest request = (HttpServletRequest) event.getServletRequest (); if (! request.getServletPath (). equals ("/ counter")) {ServletContext context = event.getServletContext (); context.setAttribute ("brojač", (int) context.getAttribute ("brojač") + 1); }} // implementacije za druge metode}

Napominjemo da izuzimamo zahtjeve za obrazac URL-a /brojač.

Uz @WebListener napomena, zamjenjujemo slušatelj odjeljak iz web.xml datoteka.

7. Gradite i trčite

Za one koji slijede, imajte na umu da za testiranje postoji drugi servlet koji smo dodali za /brojač krajnja točka koja jednostavno vraća brojač atribut konteksta servleta.

Pa, poslužimo se Mačak kao poslužitelj aplikacija.

Ako koristimo verziju maven-war-plugin prije 3.1.0, morat ćemo postaviti svojstvo failOnMissingWebXml do lažno.

Sada možemo rasporediti svoje .rat podnijeti na Mačaki pristup našim servletima.

Isprobajmo naše / velikim slovima krajnja točka:

curl // localhost: 8080 / spring-mvc-java / velika slova? input = texttouppercase TEXTTOUPPERCASE

Također bismo trebali vidjeti kako izgleda naše rukovanje pogreškama:

curl // localhost: 8080 / spring-mvc-java / velika slova Nedostaje ulazni parametar

I na kraju, brzi test našeg slušatelja:

curl // localhost: 8080 / spring-mvc-java / counter Brojač zahtjeva: 2

8. XML je i dalje potreban

Čak i sa svim značajkama predstavljenim u Servletu 3.0, postoje neki slučajevi upotrebe u kojima ćemo i dalje trebati web.xml datoteka, među njima:

  • Bilješkama ne možemo definirati redoslijed filtra - još uvijek trebamo odjeljak ako imamo više filtara koje trebamo primijeniti u određenom redoslijedu
  • Da bismo definirali vremensko ograničenje sesije, i dalje moramo koristiti odjeljak
  • Još uvijek trebamo element za autorizaciju na temelju spremnika
  • A da bismo odredili datoteke dobrodošlice, i dalje će nam trebati odjeljak

Ili je Servlet 3.0 također predstavio neke programska podrška putem ServletContainerInitializer, koji također mogu popuniti neke od ovih praznina.

9. Zaključak

U ovom smo uputstvu konfigurirali Java web aplikaciju bez upotrebe web.xml datoteka vježbanjem ekvivalentnih napomena.

Kao i uvijek, izvorni kod za ovu lekciju možete pronaći na GitHubu. Uz to, aplikacija koja koristi tradicionalnu datoteku web.xml također se može naći na GitHubu.

Za pristup temeljen na Springu, prijeđite na naš vodič web.xml vs. Initializer with Spring.


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