缺省 servlet 映射仅包含 / 字符的映射。在先前版本的 WebSphere 中,对缺省 servlet 映射的 javax.servlet.http.HttpServletRequest.getServletPath 方法的调用会返回空字符串,而对 javax.servlet.http.HttpServletRequest.getPathInfo 方法的调用会返回 / 字符。
但是,在具有 Servlet 4.0 功能部件的 Liberty 中,对缺省 servlet 映射的 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 与具有 Servlet 3.0 或 3.1 的 Liberty 中,此代码将产生以下输出:
|
getServletPath: getPathInfo: / |
在具有 Servlet 4.0 的 Liberty 中,此代码将产生以下输出:
|
getServletPath: / getPathInfo: null |
在使用 Servlet 4.0 功能部件的情况下要恢复到先前的行为,请将以下配置添加到 server.xml 文件:<webContainer servletPathForDefaultMapping="false"/>
有关更多信息,请参阅: