Sprawdź, czy występują zmiany w działaniu związane z metodami getServletPath i getPathInfo

Odwzorowanie domyślnego serwletu uwzględnia jedynie odwzorowanie znaku /. W przypadku serwera WebLogic wywołanie metody javax.servlet.http.HttpServletRequest.getServletPath na potrzeby odwzorowania domyślnego serwletu zwraca pusty łańcuch, a wywołanie metody javax.servlet.http.HttpServletRequest.getPathInfo zwraca wartość null.

W przypadku serwera WebSphere traditional wywołanie metody getServletPath na potrzeby odwzorowania domyślnego serwletu zwraca pusty łańcuch, a wywołanie metody getPathInfo zwraca znak /.

Podobnie w przypadku migracji do serwera Liberty oraz w przypadku korzystania z implementacji składnika Servlet 3.0 lub 3.1 wywołanie metody getServletPath na potrzeby odwzorowania domyślnego serwletu zwraca pusty łańcuch, a wywołanie metody getPathInfo zwraca znak /. Jednak w przypadku korzystania ze składnika Servlet 4.0 wywołanie metody getServletPath zwraca znak /, a wywołanie metody getPathInfo zwraca wartość null.

Przykładowy kod do rozpatrzenia:

< span class="Kod"> @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());
}
}

Na serwerze WebLogic ten kod zwróci następujące dane wyjściowe:

< span class="Code"> getServletŚcieżka:
getPathInfo: null

Na serwerach WebSphere traditional i Liberty ze składnikiem Servlet w wersji 3.0 lub 3.1 kod zwróci następujące dane wyjściowe:

< span class="Code"> getServletŚcieżka:
getPathInfo: /

Na serwerze Liberty ze składnikiem Servlet 4.0 kod zwróci następujące dane wyjściowe:

< span class="Code"> getServletŚcieżka:/
getPathInfo: null

W przypadku migracji na serwer WebSphere traditional lub Liberty z implementacjami składnika Servlet w wersji 3.0 lub 3.1 należy sprawdzić, czy kod oczekuje, że metoda getPathInfo zwróci znak /, a nie wartość null.

W przypadku migracji na serwer Liberty z implementacją składnika Servlet 4.0 należy sprawdzić, czy kod oczekuje, że metoda getServletPath zwróci znak /, a nie pusty łańcuch.

Informacje dodatkowe: