Het verschil tussen getRequestURI en getPathInfo in HttpServletRequest

1. Overzicht

In deze korte tutorial bespreken we het verschil tussen getRequestURI () en getPathInfo () in de HttpServletRequest klasse.

2. Verschil tussen getRequestURI () en getPathInfo ()

De functie getRequestURI ()geeft de volledige aangevraagde URI terug. Dit omvat de implementatiemap en de tekenreeks voor servlet-toewijzing. Het zal ook alle extra padinformatie retourneren.

De functie getPathInfo ()geeft alleen het pad terug dat is doorgegeven aan de servlet. Als er geen extra padinformatie wordt doorgegeven, keert deze functie terug nul.

Met andere woorden, als we onze applicatie implementeren in de root van onze webserver, en we vragen de servlet toegewezen aan "/", beide getRequestURI () en getPathInfo () zal dezelfde strin teruggeveng. Anders krijgen we andere waarden.

3. Voorbeeldverzoek

Om een ​​beter begrip te krijgen van de HttpServletRequest methoden, laten we zeggen dat we een servlet hebben die toegankelijk is via deze URL:

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

Dit verzoek zal de servlet "servlet-mapping" raken in een webtoepassing die is geïmplementeerd in de "deploy-folder". Daarom, als we bellen getRequestURI () en getPathInfo () voor dit verzoek zullen ze verschillende strings retourneren.

Laten we een eenvoudig maken doGet () servlet methode:

public void doGet (HttpServletRequest-verzoek, HttpServletResponse-reactie) gooit IOException {PrintWriter-schrijver = response.getWriter (); if ("getPathInfo" .equals (request.getParameter ("function")) {writer.println (request.getPathInfo ());} else if ("getRequestURI" .equals (request.getParameter ("function")) {schrijver .println (request.getRequestURI ());} writer.flush ();}

Laten we eerst eens kijken naar de uitvoer van de servlet voor getRequestURI verzoeken opgehaald door curl commando:

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

Laten we ook eens kijken naar de uitvoer van de servlet voor getPathInfo:

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

4. Conclusie

In dit artikel hebben we de verschil tussen getRequestURI () en getPathInfo () in HttpServletRequest. We hebben het ook gedemonstreerd met een voorbeeldservlet en -verzoek.

Zoals altijd is de servlet die is geïmplementeerd om al deze functies te testen, beschikbaar op Github.