A Spring MVC 404 hibakeresése: „A HTTP-kéréshez nem található leképezés” hiba

1. Bemutatkozás

A Spring MVC egy hagyományos alkalmazás, amely az elülső vezérlő mintájával készült. DispatcherServlet, amely elülső vezérlőként működik, felelős az útválasztásért és a kérelmek feldolgozásáért.

Mint minden webalkalmazáshoz vagy webhelyhez, a Spring MVC is visszaadja a HTTP 404 válaszkódot, ha a kért erőforrás nem található. Ebben az oktatóanyagban megnézzük 404 hiba gyakori okai a tavaszi MVC-ben.

2. A 404 válasz lehetséges okai

2.1. Helytelen URI

Tegyük fel, hogy van egy GreetingController hogy fel van térképezve /üdvözlet és renderel üdvözlet.jsp:

@Controller public class GreetingController {@RequestMapping (value = "/ greeting", method = RequestMethod.GET) public String get (ModelMap model) {model.addAttribute ("message", "Hello, World!"); visszatérő "üdvözlet"; }}

A megfelelő nézet megjeleníti a üzenet változó:

   Üdvözlet 

$ {message}

A várakozásoknak megfelelően GET kérés benyújtása a következő címre: /üdvözlet művek:

curl // localhost: 8080 / üdvözlet

Meglátunk egy HTML oldalt a „Hello World” üzenettel:

  Üdvözlet 

Helló Világ!

A 404 megtekintésének egyik leggyakoribb oka a helytelen URI használata. Például helytelen lenne GET-kérelmet benyújtani / üdvözlet ahelyett /üdvözlet:

curl // localhost: 8080 / üdvözlet

Ilyen esetben figyelmeztető üzenetet látunk a kiszolgáló naplóiban:

[http-nio-8080-exec-6] FIGYELMEZTETÉS o.s.web.servlet.PageNotFound - Nem található leképezés az HTTP-kérelemhez URI-val [/ üdvözlet] az „mvc” nevű DispatcherServlet-ben.

És az ügyfél egy hibaoldalt fog látni:

  itthon 

Ennek elkerülése érdekében meg kell győződnünk arról, hogy helyesen adtuk-e meg az URI-t.

2.2. Helytelen Servlet leképezés

Mint korábban kifejtettük, DispatcherServlet a Spring MVC első vezérlője. Ezért, ugyanúgy, mint egy standard szervlet alapú alkalmazásban, a servlet használatával is létre kell hoznunk egy leképezést a web.xml fájl.

Meghatározzuk a szervletet a servlet címkével és hozzárendelni egy URI-hez a servlet feltérképezése címke. Biztosítanunk kell, hogy a URL-minta helyes, mert elég gyakran látni javaslatokat ahol a szervlet „/ *” -ra van leképezve - vegye figyelembe a záró csillagot:

    mvc org.springframework.web.servlet.DispatcherServlet 1 mvc / * 

Most, ha kérjük /üdvözlet, figyelmeztetést látunk a kiszolgáló naplóiban:

curl // localhost: 8080 / üdvözlet
FIGYELMEZTETÉS o.s.web.servlet.PageNotFound - Nem található leképezés a HTTP-kérelemhez az URI [/WEB-INF/view/greeting.jsp] segítségével az „mvc” nevű DispatcherServlet-ben.

Ezúttal a hiba azt állítja üdvözlet.jsp nem található, és a felhasználó üres oldalt lát.

A hiba kijavításához feltérképeznünk kell DispatcherServlet helyett “/” (a záró csillag nélkül):

 mvc / 

A leképezés kijavítása után mindennek megfelelően kell működnie. Kérés /üdvözlet most a „Helló, világ!” üzenet jelenik meg:

curl // localhost: 8080 / üdvözlet
  Üdvözlet 

Helló Világ!

A probléma oka az, hogy ha feltérképezzük DispatcherServlet nak nek /*, akkor azt mondjuk az alkalmazásnak, hogy a kérelmünkhöz érkező minden egyes kérelmet ki kell szolgálni DispatcherServlet. Ez azonban nem helyes megközelítés, mert DispatcherServlet nem képes erre. Ehelyett a Spring MVC a ViewResolver olyan nézetek kiszolgálására, mint a JSP fájlok.

3. Következtetés

Ebben a rövid cikkben elmagyaráztuk, hogyan lehet 404 hibát hibakeresni a Spring MVC-ben. Átéltük a két leggyakoribb okot, amelyek miatt 404-es választ kaptunk tavaszi pályázatunkból. Az első helytelen URI-t használt a kérés benyújtása közben. A második a DispatcherServlet rosszra URL-minta ban ben web.xml.

Mint mindig, ennek az oktatóanyagnak a teljes megvalósítása megtalálható a Github oldalon.


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