2012-06-18 8 views
14

私の会社は、数か月後に私たちのウェブサイトをColdFusionのウェブサイトからJavaで書かれたサイトに戻しています。私はJavaを学んでいるだけで、Java Webアプリケーションでアプリケーションスコープ変数を設定する方法について興味があります。 ColdFusionには、アプリケーション内のすべてのColdFusionページ/コンポーネントからアクセス可能な変数を保持するapplication.cfmファイルがあります。 Javaは明らかにそのファイルと直接同等のものを持っていないので、私はJavaで同様のものを作り直す方法を知りました。 webapp内のすべてのjspページ、サーブレット、クラスなどがアクセスできる1つの中心的な場所が必要です。Javaでのアプリケーションスコープ変数の使用

だから、そのようなことをする最善の方法は何ですか?

誰かが同じような何かの例を持っていますか?

アプリケーションスコープ変数をクラスに配置する必要がありますか? XMLファイルですか? JSPページ?何か?

Java Webアプリケーションでアプリケーションスコープ変数を使用することも可能ですか?

例: イメージフォルダへのパスを保持する場所であるため、個々のJSPページやクラス、またはそのイメージフォルダへのアクセスが必要なものは、代わりにそのパスのアプリケーションスコープ変数を参照できますそれをそれぞれの場所に書いています。次に、何らかの理由で、そのイメージフォルダの場所を移動する必要があった場合、その場所のパス変数を変更し、そのイメージフォルダを参照する場所を20個更新する必要はありません。

私はこのタイプのものに関する情報を私の研究のオンラインで見つけるのに苦労しました。そのため私はここでそれについて尋ねています。私はこのタイプのものに説明を求めることはたくさんあると知っていますが、私はどのタイプの回答を得るかを尋ねると思っていました。

このトピックについてご支援いただきありがとうございます。

ServletContext context = request.getSession().getServletContext(); 

セッションオブジェクトにあなたにもサーブレットコンテキストの属性を格納することができます同じように

context.setAttribute("someValue", "aValue"); 

Object attribute = context.getAttribute("someValue"); 

の場合:

答えて

23

は、同等のは、あなたのコントローラサーブレットでは、おそらくServletContext

ですあなたはJavaを使い始めていて、ビルドするのは簡単なアプリケーションではありません。のような一般的なフレームワークを使うことをお勧めしますまたはStruts

+0

ありがとうございます。サーブレットコンテキストに属性を設定すると、セッションがタイムアウトすると期限切れになりますか?これまでのところ、web.xmlファイルにタグを設定してサーブレットコンテキストを介してアクセスできることがわかりましたが、setAttributeメソッドを使用すると、特に実行時にweb.xmlファイルが実際に変更されることはありません。では、サーブレットのコンテキストに属性を設定するのはどういうことでしょうか?セッション属性を設定するのとはまったく違うのですか?私はちょうど興味がある。 – kei23th

+3

'ServletContext'はすべてのサーブレット、JSPなどで共有されるグローバルな空間と考えることができます。一方、' HttpSession'は各ユーザに固有のものです。 ServletContextはweb.xmlで初期化できますが、J2EEアプリケーションはweb.xmlに書き込むことはありません。通常は読み取り専用のストアです。ベストプラクティスは、Spring ['ApplicationContext'](http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/context/ApplicationContext.html)のようなフレームワークを使って"アプリケーションスコープ "の値を定義することです。 )、web.xmlは汚染されません。私はいくつかの[チュートリアル](http://www.springsource.org/tutorials)のドキュメント – Brad

関連する問題