Forskjellen mellom getRequestURI og getPathInfo i HttpServletRequest

1. Oversikt

I denne raske opplæringen vil vi diskutere forskjellen mellom getRequestURI () og getPathInfo () i HttpServletRequest klasse.

2. Forskjellen mellom getRequestURI () og getPathInfo ()

Funksjonen getRequestURI ()returnerer den fullstendige forespurte URI. Dette inkluderer distribusjonsmappen og servlet-mapping-strengen. Den vil også returnere all ekstra stiinformasjon.

Funksjonen getPathInfo ()returnerer bare stien som er sendt til servletten. Hvis det ikke er gitt ekstra stiinformasjon, vil denne funksjonen returnere null.

Med andre ord, hvis vi distribuerer applikasjonen vår i webserverens rot, og vi ber om at servletten er kartlagt til “/”, begge deler getRequestURI () og getPathInfo () vil returnere samme string. Ellers får vi forskjellige verdier.

3. Eksempelforespørsel

For å få en bedre forståelse av HttpServletRequest metoder, la oss si at vi har en servlet som er tilgjengelig via denne URL:

// localhost: 8080 / deploy-folder / servlet-mapping

Denne forespørselen vil treffe "servlet-mapping" servlet i et webapplikasjon distribuert i "deploy-folder". Derfor, hvis vi ringer getRequestURI () og getPathInfo () for denne forespørselen vil de returnere forskjellige strenger.

La oss lage en enkel doGet () servletmetode:

offentlig ugyldig doGet (HttpServletRequest forespørsel, HttpServletResponse respons) kaster IOException {PrintWriter skribent = respons.getWriter (); if ("getPathInfo" .equals (request.getParameter ("function")) {writer.println (request.getPathInfo ());} else if ("getRequestURI" .equals (request.getParameter ("function")) {writer .println (request.getRequestURI ());} writer.flush ();}

For det første, la oss ta en titt på utgangen av servletten for getRequestURI forespørsler hentet med curl-kommando:

curl // localhost: 8080 / deploy-folder / servlet-mapping / request-path? function = getRequestURI
/ deploy-folder / servlet-mapping / request-path 

På samme måte, la oss ta en titt på utgangen av servletten for getPathInfo:

curl // localhost: 8080 / deploy-folder / servlet-mapping / request-path? function = getPathInfo
/ forespørselssti

4. Konklusjon

I denne artikkelen har vi forklart forskjell mellom getRequestURI () og getPathInfo () i HttpServletRequest. Vi demonstrerte det også med et eksempel på servlet og forespørsel.

Som alltid er servletten implementert for å teste alle disse funksjonene tilgjengelig på Github.


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