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.