これは私が「エンタープライズ」Webアプリケーションを扱っている特別なケースです。エンタープライズアプリケーションはrequest.getContext()
を呼び出し、別の文字列と比較しています。サーブレットの内部からリクエストコンテキストパスをプログラムで設定することはできますか?
getServletContext.getContextPath()を使用してサーブレットコンテキストパスを取得できます。サーブレットの内部からリクエストコンテキストパスを設定することは可能ですか?
これは私が「エンタープライズ」Webアプリケーションを扱っている特別なケースです。エンタープライズアプリケーションはrequest.getContext()
を呼び出し、別の文字列と比較しています。サーブレットの内部からリクエストコンテキストパスをプログラムで設定することはできますか?
getServletContext.getContextPath()を使用してサーブレットコンテキストパスを取得できます。サーブレットの内部からリクエストコンテキストパスを設定することは可能ですか?
設定することはできませんが、HttpServletRequestWrapper
のヘルプを使用して結果を変更することはできます。
public class MyRequest extends HttpServletRequestWrapper {
public MyRequest(HttpServletRequest request) {
super(request);
}
@Override
public String getContextPath() {
return "a different context path"; // TODO: implement accordingly.
}
}
doFilter()
方法では、基本的には、以下のんFilter
を作成し、関心のURLパターンの早期フィルタとして、それをマップします。
chain.doFilter(new MyRequest((HttpServletRequest) request), response);
素晴らしいです。ありがとうBalusC! – Upgradingdave
ようこそ。 – BalusC
いいえ、アプリをデプロイすると設定されます。デプロイされた後は変更することはできません
私はあなたが 'のHttpServletRequest#getContextPath()' ')(HttpServletRequestの#のgetContext'というような方法がありませんから話をしていることを前提としています。 – BalusC