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

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

Однако в Liberty с компонентом 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());
}
}

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

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

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

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

Для того чтобы восстановить прежний принцип работы при использовании компонента Servlet 4.0, добавьте следующее свойство в файл server.xml: <webContainer servletPathForDefaultMapping="false"/>

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