2011-07-12 30 views
2

Tomcatサーバーでデータをメモリにロードするにはどうすればよいですか?Jsp大量のデータをメモリにロードしていますか?

私はファイルからデータをロードするJavaクラスを持っています。 私は一度データをメモリにロードしたい、そしてクライアントがそのクラスを使用するページを要求するたびに、データはメモリから使用されることになります。例

class MyClass 
{ 
     HashMap data = new HashMap(100); 
     public void LoadDataFromFile() 
     {.....} 
     public void UseTheData(String input) 
     {....} 
     public MyClass(){ LoadDataFromFile();} // c'tor load data 
     public SetInput(String Input) 
     { 
      UseTheData(input); 
     } 
} 

のため、私のJSPファイル内

私は意志スコープ= "セッション" を使用する場合、私はJSPファイル

にJSTLを使用する必要があります知っている

Myclass myclass= new MyCass(); 
myclass.LoadDataFromFile(); 
myclass.UseTheData(); 

データの読み込みは残りますか?

<jsp:useBean id="myclass" class="MyClass" scope="session"> 
<jsp:setProperty name="myclass" property="input" value="blabla" /> 
</jsp:useBean> 

コンストラクタでデータをロードする場合、クラスがinitであることを一度だけ確認できますか?

答えて

3

ServletContextListenerを作成し、web.xmlファイルに登録します。 ServletContextListenerでは、アプリケーションが初期化されると、ファイルを読み込んで、ServletContextの属性に格納します。この属性は、JavaコードとJSPコードから簡単にアクセスできます。

+0

Javaクラスはこのサーブレットを知らないので、サーブレットからクラスにデータを渡す必要がありますか? – yossi

+2

scope = "session"をscope = "application"に置き換えると、ServletContext属性に格納されているオブジェクトにアクセスします。しかし、jsp:useBeanは、古くからのものです。実際にはMVCフレームワークを使用して、JSPからJavaとjsp:xxxタグを使用しないでください。 –

+0

私はスコープ= "アプリケーション"を使用するとjsp:useBeanはすでに新しいBeanを作成しますか? – yossi

関連する問題