Проверить наличие изменений в алгоритме работы методов getServletPath и getPathInfo

Связь с сервлетом по умолчанию содержит только символ /. В WebLogic вызов метода javax.servlet.http.HttpServletRequest.getServletPath для связи с сервлетом по умолчанию возвращал пустую строку, а вызов метода javax.servlet.http.HttpServletRequest.getPathInfo возвращал null.

В WebSphere traditional вызов getServletPath для связи с сервлетом по умолчанию возвращает пустую строку, а вызов метода getPathInfo возвращает символ /.

В случае миграции на Liberty при использовании реализации компонента Servlet 3.0 или 3.1 вызов getServletPath для связи с сервлетом по умолчанию возвращает пустую строку, а вызов метода getPathInfo возвращает символ /. Однако при использовании компонента Servlet 4.0 вызов getServletPath возвращает символ /, а вызов getPathInfo возвращает null.

Для примера рассмотрим следующий фрагмент кода:

< 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());
}
}

В WebLogic этот код создаст следующий вывод:

< span class="Code"> getServletПуть:
getPathInfo: null

В WebSphere traditional или Liberty с компонентом Servlet версии 3.0 или 3.1 этот код создаст следующий вывод:

< span class="Code"> getServletПуть:
getPathInfo: /

В Liberty с компонентом Servlet 4.0 этот код создаст следующий вывод:

< span class="Code"> getServletПуть:/
getPathInfo: null

Если выполняется миграция на WebSphere traditional или на Liberty с реализацией Servlet 3.0 или 3.1, следует проверить, учтено ли в коде то, что getPathInfo возвращает символ / вместо значения null.

Если выполняется миграция на Liberty с реализацией Servlet 4.0, следует проверить, учтено ли в коде то, что getServletPath возвращает символ / вместо пустой строки.

Дополнительная информация: