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

Eine Standardservletzuordnung hat nur eine Zuordnung des Zeichens /. In WebLogic gibt der Aufruf der Methode javax.servlet.http.HttpServletRequest.getServletPath für eine Standardservletzuordnung eine leere Zeichenfolge zurück und ein Aufruf der Methode javax.servlet.http.HttpServletRequest.getPathInfo gibt null zurück.

In WebSphere Traditional gibt der Aufruf von getServletPath für eine Standardservletzuordnung eine leere Zeichenfolge zurück, aber der Aufruf von getPathInfo gibt das Zeichen / zurück.

Wenn Sie eine Migration auf Liberty durchführen und die Servlet 3.0- oder 3.1-Featureimplementierung verwenden, gibt der Aufruf von getServletPath für eine Standardservletzuordnung eine leere Zeichenfolge zurück, aber der Aufruf der Methode getPathInfo gibt das Zeichen / zurück. Wenn Sie jedoch das Feature "Servlet 4.0" verwenden, gibt der Aufruf von getServletPath 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());
}
}

In WebLogic gibt dieser Code die folgende Ausgabe aus:

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

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 eine Migration auf WebSphere Traditional oder auf Liberty mit der Servlet 3.0 oder Servlet 3.1-Implementierung durchführen, stellen Sie sicher, dass Ihr Code berücksichtigt, dass getPathInfo das Zeichen / und nicht null zurückgibt.

Wenn Sie eine Migration auf Liberty mit der Servlet 4.0-Implementierung durchführen, stellen Sie sicher, dass Ihr Code berücksichtigt, dass getServletPath das Zeichen / und keine leere Zeichenfolge zurückgibt.

Weitere Informationen finden Sie in den folgenden Quellen: