2011-04-05 9 views
2

これは私が「エンタープライズ」Webアプリケーションを扱っている特別なケースです。エンタープライズアプリケーションはrequest.getContext()を呼び出し、別の文字列と比較しています。サーブレットの内部からリクエストコンテキストパスをプログラムで設定することはできますか?

getServletContext.getContextPath()を使用してサーブレットコンテキストパスを取得できます。サーブレットの内部からリクエストコンテキストパスを設定することは可能ですか?

+1

私はあなたが 'のHttpServletRequest#getContextPath()' ')(HttpServletRequestの#のgetContext'というような方法がありませんから話をしていることを前提としています。 – BalusC

答えて

2

設定することはできませんが、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); 
+0

素晴らしいです。ありがとうBalusC! – Upgradingdave

+0

ようこそ。 – BalusC

0

いいえ、アプリをデプロイすると設定されます。デプロイされた後は変更することはできません

関連する問題