0

私のWebアプリケーションの多くの場所で、特定の文字列が必要です:

request.getServletContext().getRealPath("/"); 
// I can only get this once the web-app starts

単純な Java クラスがこの文字列を知る必要がある場合があります。この文字列を毎回クラスの関数に渡したくありません。1 つの方法は、この文字列を Web アプリケーションの最初のファイルに隠しておくことです。これが必要になるたびに、単にファイルを読むだけです.しかし、これはあまり良い選択肢ではないようです. 他に方法はありますか?

context.xmlアプリの に保存できるかもしれません。可能であればどうすればいいですか?

より良い方法があれば提案してください。

サーバーとしてTomcatを使用しています。

4

2 に答える 2

1

アプリケーションの起動時に次のコードを呼び出して実行します (例: ServletContextListenerを使用):

public void contextInitialized(ServletContextEvent sce) {
   ServletContextRootRealPath.set(sce.getServletContext().getRealPath("/"));
}

その後、必要なときにいつでも呼び出すだけです

ServletContextRootRealPath.get()

すべて静的であるため、変数は、この JVM で実行されるすべてのコードから JVM 全体でアクセスできます。

ユーティリティ クラス

public final class ServletContextRootRealPath {
  private static String path;

  private ServletContextRootRealPath() {
    // don't instantiate utility classes
  }

  public static void set(String rootRealPath) {
    path = rootRealPath;
  }

  public static String get() {
    return path;
  }
}
于 2013-02-03T16:02:37.400 に答える
0

任意のクラスの静的変数に値を格納できます (基本的に、一般的なユーティリティ関数を提供するために使用されるヘルパー クラス)。この変数は静的であり、インスタンスなしでアクセスできるため、後でクラスのインスタンスを作成せずにこの変数を参照できます。

于 2013-02-03T15:48:32.360 に答える