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 wcześniejszych wersjach serwera WebSphere 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 znak /.

Jednak w przypadku serwera Liberty ze składnikiem Servlet 4.0 wywołanie metody getServletPath na potrzeby odwzorowania domyślnego serwletu 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 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 korzystania ze składnika Servlet 4.0: aby przywrócić poprzedni sposób działania, należy dodać następującą konfigurację do pliku server.xml: <webContainer servletPathForDefaultMapping="false"/>.

Informacje dodatkowe: