預設 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"/>
如需相關資訊,請參閱: