getServletPath および getPathInfo メソッドでの振る舞いの変更を確認する

デフォルトのサーブレット・マッピングには、/ 文字のみのマッピングがあります。WebSphere の以前のバージョンでは、  デフォルトのサーブレット・マッピングの javax.servlet.http.HttpServletRequest.getServletPath メソッドへの呼び出しは 空ストリングを返し、javax.servlet.http.HttpServletRequest.getPathInfo メソッドへの呼び出しは / 文字を返します。

ただし、Servlet 4.0 フィーチャーのある Liberty では、デフォルトのサーブレット・マッピングの 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());
}
}

Servlet 3.0 または 3.1 を使用する WebSphere traditional および Liberty では、コードの出力は以下のようになります。

< span class="Code"> getServletパス:
getPathInfo: /

Servlet 4.0 を使用する Liberty では、コードの出力は以下のようになります。

< span class="Code"> getServletパス:/
getPathInfo: null

Servlet 4.0 フィーチャーの使用中に以前の振る舞いに戻すには、以下の構成を server.xml file: <webContainer servletPathForDefaultMapping="false"/> に追加します。

追加情報については、以下を参照してください。