Razlika između getRequestURI i getPathInfo u HttpServletRequest

1. Pregled

U ovom brzom vodiču razgovarat ćemo o razlici između getRequestURI () i getPathInfo () u HttpServletRequest razred.

2. Razlika između getRequestURI () i getPathInfo ()

Funkcija getRequestURI ()vraća kompletan traženi URI. To uključuje mapu implementacije i niz preslikavanja servleta. Također će vratiti sve dodatne informacije o putu.

Funkcija getPathInfo ()samo vraća put proslijeđen servletu. Ako se ne proslijede dodatne informacije o putu, ova će se funkcija vratiti null.

Drugim riječima, ako svoju aplikaciju postavimo u korijen našeg web poslužitelja i zahtijevamo servlet mapiran na “/”, oboje getRequestURI () i getPathInfo () vratit će isti string. Inače ćemo dobiti različite vrijednosti.

3. Primjer zahtjeva

Da bi se bolje razumjelo HttpServletRequest metode, recimo da imamo servlet kojem se može pristupiti putem ovog URL-a:

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

Ovaj će zahtjev pogoditi servlet "preslikavanje servleta" u web aplikaciji postavljenoj unutar "mape implementacije". Stoga, ako nazovemo getRequestURI () i getPathInfo () za ovaj će zahtjev vratiti različite nizove.

Stvorimo jednostavan doGet () metoda servleta:

javna void doGet (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca IOException {PrintWriter Writer = response.getWriter (); if ("getPathInfo" .equals (request.getParameter ("function")) {writer.println (request.getPathInfo ());} else if ("getRequestURI" .equals (request.getParameter ("function")) {writer .println (request.getRequestURI ());} writer.flush ();}

Prvo, pogledajmo izlaz servleta za getRequestURI zahtjevi dohvaćeni naredbom curl:

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

Slično tome, pogledajmo izlaz servleta za getPathInfo:

curl // localhost: 8080 / deploy-folder / servlet-mapping / request-path? function = getPathInfo
/ zahtjev-put

4. Zaključak

U ovom smo članku objasnili razlika između getRequestURI () i getPathInfo () u HttpServletRequest. Također smo to demonstrirali na primjeru servleta i zahtjeva.

Kao i uvijek, servlet implementiran za testiranje svih ovih funkcija dostupan je na Githubu.