Prüfen, ob sich das Verhalten der Methoden getServletPath und getPathInfo geändert hat

Eine Standardservletzuordnung hat nur eine Zuordnung des Zeichens /. In früheren Versionen von WebSphere gibt der Aufruf der Methode javax.servlet.http.HttpServletRequest.getServletPath für eine Standardservletzuordnung eine leere Zeichenfolge zurück und der Aufruf der Methode javax.servlet.http.HttpServletRequest.getPathInfo gibt das Zeichen / zurück.

In Liberty mit dem Feature "Servlet 4.0" gibt der Aufruf von getServletPath für eine Standardservletzuordnung jedoch das Zeichen / zurück und der Aufruf von getPathInfo gibt null zurück.

Sehen Sie sich beispielsweise den folgenden Code an:

< span class="Code"> @WebServlet("/")
public class TestServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) {
System.out.println("getServletPath: " + req.getServletPath());
System.out.println("getPathInfo: " + req.getPathInfo());
}
}

Wenn dieser Code in WebSphere Traditional und Liberty mit Servlet 3.0 oder 3.1 verwendet wird, gibt er die folgende Ausgabe aus:

< span class="Code"> getServlet-Pfad:
getPathInfo: /

Wenn dieser Code in Liberty mit Servlet 4.0 verwendet wird, gibt er die folgende Ausgabe aus:

< span class="Code"> getServletPfad:/
getPathInfo: null

Wenn Sie wieder zum vorherigen Verhalten zurückkehren möchten, wenn Sie das Feature "Servlet 4.0" verwenden, fügen Sie der Datei server.xml die folgende Konfiguration hinzu: <webContainer servletPathForDefaultMapping="false"/>

Weitere Informationen finden Sie in den folgenden Quellen: