Связь с сервлетом по умолчанию содержит только символ /. В
других серверах приложений вызов метода
javax.servlet.http.HttpServletRequest.getServletPath для связи с
сервлетом по умолчанию возвращает значение URI запроса без пути контекста, а вызов метода
javax.servlet.http.HttpServletRequest.getPathInfo возвращает null.
В WebSphere traditional вызов getServletPath для связи с сервлетом по умолчанию возвращает пустую строку, а вызов метода
getPathInfo возвращает символ /.
В случае миграции на
Liberty при использовании реализации компонента Servlet 3.0 или 3.1 вызов
getServletPath для связи с сервлетом по умолчанию возвращает пустую строку, а вызов метода getPathInfo возвращает символ /.
Для примера рассмотрим следующий фрагмент кода:
В других серверах приложений этот код создаст следующий вывод:
В WebSphere traditional или Liberty с компонентом Servlet версии 3.0 или 3.1 этот код создаст следующий вывод:
Если выполняется миграция на WebSphere Liberty с реализацией Servlet 3.0 или 3.1, добавьте элемент <webContainer servletPathForDefaultMapping="true"/>
в файл конфигурации server.xml. После добавления этого элемента методы
getServletPath и getPathInfo будут работать как в других серверах приложений.
Если применяется реализация Servlet 4.0, то никаких изменений вносить не требуется. Методы getServletPath
и getPathInfo работают в Servlet 4.0 так же, как в других серверах приложений.
Если выполняется миграция на WebSphere Traditional, установите для свойства WebContainer
com.ibm.ws.webcontainer.EnableDefaultServletRequestPathElements значение true.
Если установлено это значение, методы
getServletPath и getPathInfo будут работать как в других серверах приложений.
Дополнительная информация: