デフォルトのサーブレット・マッピングには、/ 文字のみのマッピングがあります。競合のアプリケーション・サーバーでは、
デフォルトのサーブレット・マッピングの javax.servlet.http.HttpServletRequest.getServletPath メソッドへの呼び出しは
リクエスト URI からコンテキスト・パスを引いた値を返し、
javax.servlet.http.HttpServletRequest.getPathInfo メソッドへの呼び出しはヌルを返します。
WebSphere traditional では、デフォルトのサーブレット・マッピングの getServletPath への呼び出しは空ストリングを返し、
getPathInfo メソッドへの呼び出しは、/ 文字を返します。
同様に、Liberty にマイグレーション時に Servlet 3.0 または 3.1 のフィーチャー実装環境を使用している場合は、デフォルトのサーブレット・マッピングの
getServletPath への呼び出しは空ストリングを返し、getPathInfo メソッドへの呼び出しは / 文字を返します。
例えば、次のコードについて考えてみます。
競合のアプリケーション・サーバーでは、このコードは以下の出力となります。
ただし、WebSphere traditional と Servlet 3.0 または 3.1 のある Liberty では、コーディングは以下のような出力になります。
WebSphere Liberty にマイグレーションしていて、Servlet 3.0 または 3.1 実装環境を使用している場合は、<webContainer servletPathForDefaultMapping="true"/>
エレメントを server.xml 構成ファイルに追加します。このエレメントを追加すると、getServletPath メソッドおよび
getPathInfo メソッドは競合のアプリケーション・サーバーでの振る舞いと同様の振る舞いをします。
Servlet 4.0 実装環境を使用している場合は、変更は不要です。Servlet 4.0 実装環境の getServletPath および
getPathInfo は、競合のアプリケーション・サーバーと同様の振る舞いとなります。
WebSphere traditional にマイグレーションしている場合は、WebContainer com.ibm.ws.webcontainer.EnableDefaultServletRequestPathElements プロパティーを true に設定します。
このプロパティーを設定すると、getServletPath メソッドおよび getPathInfo メソッド
は競合のアプリケーション・サーバーでの振る舞いと同様の振る舞いをします。
追加情報については、以下を参照してください。