Связь с сервлетом по умолчанию содержит только символ /. В
предыдущих версиях WebSphere вызов метода
javax.servlet.http.HttpServletRequest.getServletPath для связи с
сервлетом по умолчанию возвращал пустую строку, а вызов метода
javax.servlet.http.HttpServletRequest.getPathInfo возвращал символ /.
Однако в Liberty с компонентом Servlet 4.0 вызов метода
getServletPath для связи с сервлетом по умолчанию возвращает
символ /, а вызов getPathInfo возвращает значение null.
Для примера рассмотрим следующий фрагмент кода:
|
@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 этот код создаст следующий вывод:
|
getServletPath: getPathInfo: / |
В Liberty с компонентом Servlet 4.0 этот код создаст следующий вывод:
|
getServletPath: / getPathInfo: null |
Для того чтобы восстановить прежний принцип работы при использовании
компонента Servlet 4.0, добавьте следующее свойство в файл
server.xml: <webContainer
servletPathForDefaultMapping="false"/>
Дополнительная информация: