Rozdiel medzi getRequestURI a getPathInfo v HttpServletRequest

1. Prehľad

V tomto rýchlom návode si povieme o rozdieloch medzi getRequestURI () a getPathInfo () v HttpServletRequest trieda.

2. Rozdiel medzi getRequestURI () a getPathInfo ()

Funkcia getRequestURI ()vráti kompletný požadovaný URI. Patria sem priečinok nasadenia a reťazec mapovania servletov. Vráti tiež všetky ďalšie informácie o ceste.

Funkcia getPathInfo ()vráti iba cestu odovzdanú servletu. Ak nie sú odovzdané žiadne ďalšie informácie o ceste, táto funkcia sa vráti nulový.

Inými slovami, ak nasadíme našu aplikáciu do koreňového adresára nášho webového servera a požadujeme, aby bol servlet mapovaný na „/“, obidve getRequestURI () a getPathInfo () vráti rovnakú strinug. V opačnom prípade dostaneme rôzne hodnoty.

3. Príklad žiadosti

S cieľom lepšie porozumieť HttpServletRequest metódy, povedzme, že máme servlet, ku ktorému je možné pristupovať prostredníctvom tejto adresy URL:

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

Táto požiadavka zasiahne servlet „mapovanie servletov“ vo webovej aplikácii nasadenej vo vnútri priečinka „deploy-folder“. Preto, ak voláme getRequestURI () a getPathInfo () za túto požiadavku vrátia rôzne reťazce.

Vytvorme jednoduchý doGet () metóda servletu:

public void doGet (požiadavka HttpServletRequest, odpoveď HttpServletResponse) hodí IOException {PrintWriter writer = response.getWriter (); if ("getPathInfo" .equals (request.getParameter ("funkcia")) {writer.println (request.getPathInfo ());} else if ("getRequestURI" .equals (request.getParameter ("funkcia")) {spisovateľ .println (request.getRequestURI ());} writer.flush ();}

Najskôr sa pozrime na výstup servletu pre getRequestURI požiadavky načítané príkazom curl:

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

Podobne sa pozrime na výstup servletu pre getPathInfo:

curl // localhost: 8080 / deploy-folder / servlet-mapping / request-path? function = getPathInfo
/ požiadavková cesta

4. Záver

V tomto článku sme vysvetlili rozdiel medzi getRequestURI () a getPathInfo () v HttpServletRequest. Demonštrovali sme to aj na príklade servletu a požiadavky.

Servlet implementovaný na testovanie všetkých týchto funkcií je ako vždy k dispozícii na serveri Github.


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