デフォルトのサーブレット・マッピングには、/ 文字のみのマッピングがあります。WebSphere の以前のバージョンでは、
デフォルトのサーブレット・マッピングの javax.servlet.http.HttpServletRequest.getServletPath メソッドへの呼び出しは
空ストリングを返し、javax.servlet.http.HttpServletRequest.getPathInfo メソッドへの呼び出しは / 文字を返します。
ただし、Servlet 4.0 フィーチャーのある Liberty では、デフォルトのサーブレット・マッピングの 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()); } } |
Servlet 3.0 または 3.1 を使用する WebSphere traditional および Liberty では、コードの出力は以下のようになります。
|
getServletPath: getPathInfo: / |
Servlet 4.0 を使用する Liberty では、コードの出力は以下のようになります。
|
getServletPath: / getPathInfo: null |
Servlet 4.0 フィーチャーの使用中に以前の振る舞いに戻すには、以下の構成を
server.xml file: <webContainer servletPathForDefaultMapping="false"/> に追加します。
追加情報については、以下を参照してください。