1. Übersicht
In diesem kurzen Tutorial werden wir den Unterschied zwischen getRequestURI () und getPathInfo () in der HttpServletRequest- Klasse diskutieren .
2. Unterschied zwischen getRequestURI () und getPathInfo ()
Die Funktion getRequestURI () gibt den vollständig angeforderten URI zurück. Dies umfasst den Bereitstellungsordner und die Servlet-Zuordnungszeichenfolge. Außerdem werden alle zusätzlichen Pfadinformationen zurückgegeben.
Die Funktion getPathInfo () gibt nur den Pfad zurück, der an das Servlet übergeben wurde . Wenn keine zusätzlichen Pfadinformationen übergeben werden, gibt diese Funktion null zurück .
Mit anderen Worten, wenn wir unsere Anwendung im Stammverzeichnis unseres Webservers bereitstellen und das Servlet anfordern, das „/“ zugeordnet ist, geben sowohl getRequestURI () als auch getPathInfo () dieselbe Zeichenfolge zurück . Andernfalls erhalten wir unterschiedliche Werte.
3. Beispielanforderung
Nehmen wir an, wir haben ein Servlet, auf das über diese URL zugegriffen werden kann , um ein besseres Verständnis der HttpServletRequest- Methoden zu erhalten :
//localhost:8080/deploy-folder/servlet-mapping
Diese Anforderung trifft das Servlet "Servlet-Mapping" in einer Webanwendung, die im "Bereitstellungsordner" bereitgestellt wird. Wenn wir für diese Anforderung getRequestURI () und getPathInfo () aufrufen , geben sie daher unterschiedliche Zeichenfolgen zurück.
Erstellen wir eine einfache doGet () - Servlet-Methode:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws 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(); }
Schauen wir uns zunächst die Ausgabe des Servlets für getRequestURI- Anforderungen an, die mit dem Befehl curl abgerufen werden:
curl //localhost:8080/deploy-folder/servlet-mapping/request-path?function=getRequestURI
/deploy-folder/servlet-mapping/request-path
Schauen wir uns auch die Ausgabe des Servlets für getPathInfo an :
curl //localhost:8080/deploy-folder/servlet-mapping/request-path?function=getPathInfo
/request-path
4. Fazit
In diesem Artikel haben wir den Unterschied zwischen getRequestURI () und getPathInfo () in HttpServletRequest erläutert . Wir haben es auch mit einem Beispielservlet und einer Anfrage demonstriert.
Wie immer ist das zum Testen all dieser Funktionen implementierte Servlet auf Github verfügbar.