FeaturesPluginsDocs & SupportCommunityPartners

>> Visual Web Pack のほかのドキュメント

スコープと管理 Bean

2007 年 5 月 [Revision number: V5.5.1-1]    

このチュートリアルでは、NetBeans Visual Web Pack を使用してアプリケーションを作成し、アプリケーションセッション、および要求スコープによってどのようにアプリケーションのオブジェクトを管理するかを示します。スコープとは、Web アプリケーション内でのオブジェクトの可用性 (コンテキスト) およびあらかじめ定められたその寿命です。

このチュートリアルで作成するWeb アプリケーションは、開票にアプリケーションスコープのオブジェクトを使用し、ユーザーがセッションごとに 1 票のみ投票しているかを確認するためにセッションスコープのオブジェクトを使用します。アプリケーションは、要求スコープオブジェクトを使用して、ユーザーが票を送信した時間を表示します。クライアントのブラウザに応答が送信されたあとは、アプリケーションはこの時間の値を必要としないため、時間は要求スコープに保存されます。

目次

スコープについて
管理 Bean へのプロパティーの追加
開始ページの作成
結果ページの作成
ページナビゲーションの指定
アプリケーションの実行
その他の可能な操作
  このページの情報は NetBeans 5.5 および 5.5.1 の Visual Web Pack が対象です。
 

このチュートリアルでは、次のテクノロジとリソースを使用します。

JavaServer Faces コンポーネント /
Java EE プラットフォーム
動作可能Java EE 5* の場合、1.2
動作可能J2EE 1.4 の場合、1.1
Travel データベース 任意任意
BluePrints AJAX コンポーネントライブラリ 任意任意

* このチュートリアルの公開時点で Java EE 5 をサポートしていたのは Sun Java System Application Server だけです。

このチュートリアルは、Sun Java System Application Server PE 9.0 Update Release 1 以降と Tomcat 5.5.17 を使用することを想定しています。別のサーバーを使用している場合は、「リリースノート」と「FAQ」(または「日本語 FAQ」) で既知の問題やその回避策を確認してください。サポートされているサーバーと Java EE プラットフォームについては、「リリースノート」を参照してください。

スコープについて

ユーザーが任意のページにとどまっている間は、そのページが再表示されたとき (ユーザーが null を返すボタンをクリックしたときなど) でも、コンポーネントの値は記憶されています。しかし、ユーザーがそのページから離れた場合、コンポーネントの値は消滅します。

ほかのページで値を有効にする、または同じページに戻ったときに値を有効にするには、値を保存する必要があります。IDE からプロジェクトを作成するとき、IDE は値を保存するために、次の 3 つの管理 Beanを作成します。

  • RequestBean1
  • SessionBean1
  • ApplicationBean1

次の図に、デフォルトの管理 Bean を持つ「アウトライン」ウィンドウを示します。

図 1:デフォルトのクラスとスコープ 図 1:デフォルトの管理 Bean

管理 Bean は、JavaServer Faces Web アプリケーションがインスタンス化し、要求スコープ、セッションスコープ、あるいはアプリケーションスコープのいずれかに保存する JavaBeans オブジェクトです。Web アプリケーションは、要求スコープに RequestBean1、セッションスコープに SessionBean1、およびアプリケーションスコープに ApplicationBean1 をそれぞれ保存します。

これらの管理 Bean のいずれかにプロパティーを追加するには、「アウトライン」ウィンドウで Bean を右クリックし、ポップアップメニューから「追加」>「プロパティー」を選択します。ダイアログの入力を完了し、「了解」をクリックしたあと、IDE によってプロパティーおよびそのプロパティーの適切な取得メソッドと設定メソッドがソースコードに追加されます。コンポーネントのプロパティーに値をバインドする、あるいは Bean プロパティーの取得メソッドと設定メソッドを呼び出すことにより、Bean プロパティーの値にアクセスできます。このチュートリアルでは、両方のアクセスメソッドを使用します。

値を保存するための Bean プロパティーを作成する前に、プロパティーの値に適切なスコープを決める必要があります。同時に複数のユーザーが Web アプリケーションにアクセスできるため、できるだけ小さいスコープを使用して、サーバーのリソースを最大限利用できるようにします。次の図は、それぞれの種類のスコープの維持期間を示しています。

  • アプリケーションスコープは、サーバーがアプリケーションを停止するまで維持します。アプリケーション Bean に保存した値は、すべてのセッション、および同じアプリケーションマップを使用するすべての要求に対して有効です。
  • セッションスコープはユーザーが最初に Web アプリケーションのページにアクセスしたときに開始し、休止状態のためにユーザーのセッションがタイムアウトしたとき、あるいは、Web アプリケーションがセッションを無効にするとき (たとえば session.invalidate() を呼び出すときなど) に終了します。
  • 要求スコープは、ユーザーがページを送信するときに開始し、どのページでも、応答が完全に描画されたときに終了します。
図 2:Web アプリケーションスコープ 図 2:Web アプリケーションスコープ

たとえば、Web アプリケーションに、測定単位(ピクセル、センチメートル、およびインチ) のドロップダウンリストがあるとします。ApplicationBean1 に選択項目のリストを保存すると、すべての並列ユーザーセッションでそのリストを共有できます。一方、SessionBean1 にユーザーログイン名を保存すると、ユーザーがそのセッション内でアクセスするすべてのページでそのログイン名を有効にできます。現在の要求のライフタイムを越えて情報を使用する必要のない場合は、RequestBean1 にプロパティーを追加することにより、記憶空間を節約することができます。

警告:ナビゲーション規則の <navigation-case> 要素内に <redirect> 要素を追加した場合は、要求 Bean を使用できません(これらの規則は、ページナビゲーションエディタで「XML」ボタンをクリックすると表示されます)。ページが送信されると、後続のページが要求 Bean に格納された値を使用する前に <redirect> 要素はページをリダイレクトして要求を終了します。

IDE からページを作成すると、ページ Bean の Java ソースコードには、RequestBean1 オブジェクト、SessionBean1 オブジェクト、および ApplicationBean1 オブジェクトにアクセスするためのメソッドが含まれます。これらの管理 Bean のプロパティーにアクセスするには、次のようなコードを使用します。

コード例 1:アプリケーション Bean プロパティーへのアクセス
ApplicationBean1 appBean = getApplicationBean1();
Option[] choices = appBean.BallotOptions();

はじめてページが管理 Bean のプロパティーにアクセスするときに、Web アプリケーションは、管理 Bean をその Bean スコープ内でインスタンス化します。たとえば、ユーザーが SessionBean1 のプロパティーを参照するページにアクセスするまで、SessionBean1 オブジェクトのインスタンスは、ユーザーのセッションに存在しません。任意のセッションによって初めてページがアプリケーション Bean にアクセスすると、ApplicationBean1 オブジェクトのインスタンスが作成され、Web アプリケーションの実行中は、そのインスタンスが保持されます。

ヒント: その他の管理 Bean を追加するには、「プロジェクト」ウィンドウで「ソースパッケージ」ノードを展開し、そのパッケージノードを右クリックして、「新規」>「ファイル/フォルダ」を選択し、「管理 Bean」カテゴリを選択し、「ファイルの種類」でスコープを選択して、残りのウィザードの手順を行います。

管理 Bean へのプロパティーの追加

この Web アプリケーションのページは、この節で作成する、次の値へのアクセスを必要とします。

  • ballotOptions票の選択肢のリストを含む配列プロパティー。リストはすべてのセッションに対し同じままでなければならないので、このプロパティーはアプリケーションスコープに入ります。
  • tallyすべての採決を累積するハッシュマッププロパティー。セッション間で保持する必要があるので、アプリケーションスコープに入ります。
  • hasVotedユーザーが投票したかどうかを追跡する boolean 型プロパティー。アプリケーションは単一セッション内の複数の要求間で値を維持する必要があるので、アプリケーションはセッションスコープに値を保存します。
  • timestampユーザーが票を送信したとき、アプリケーションは次のページに遷移するまで使用時間を記録する Date プロパティー。次のページが表示されたあと、アプリケーションは値を必要としないため、アプリケーションは要求スコープ内に値を保存します。
次の手順を行うことにより、管理 Bean にプロパティーを追加します。
  1. メインメニューから「ファイル」>「新規プロジェクト」を選択します。
  2. 「新規プロジェクト」ウィザードで、「カテゴリ」リストから「Web」を選択し、「プロジェクト」リストから「Visual Web アプリケーション」を選択します。
  3. 「次へ」をクリックします。
  4. プロジェクト名に「Scopes」と入力し、「完了」をクリックします。
  5. 「アウトライン」ウィンドウで「ApplicationBean1」を右クリックして、ポップアップメニューから「追加」>「プロパティー」を選択します。

    注: 最初にノードを右クリックしたときに「追加」メニューが使用できない場合は、Escape キーを押してふたたび右クリックしてください。

    次の図に示すような「新規プロパティーパターン」ダイアログが表示されます。

    図 3:「新規プロパティーパターン」ダイアログ 図 3:「新規プロパティーパターン」ダイアログ
  6. 次のように、プロパティーの名前と型を設定し、「了解」をクリックします。

    テキストフィールド
    名前 ballotOptions
    タイプ Option[]

  7. 同様の手順で、別のプロパティーをアプリケーション Bean に追加します。次のように、プロパティーの名前と型を設定し、「了解」をクリックします。

    テキストフィールド
    名前 tally
    タイプ HashMap

  8. 「アウトライン」ウィンドウで「ApplicationBean1」を右クリックして、ポップアップウィンドウから「Java ソースを編集」を選択します。
  9. ソース内で右クリックし、ポップアップメニューから「インポートを修正」を選択します。

    Option クラスを含む 1 つ以上のパッケージがあるため、「インポートを修正」ダイアログが表示されます。
  10. 「完全修飾名」ドロップダウンリストの「オプション」クラスは、プロジェクトで使用している Java EE のバージョンによって異なります。

    • Java EE 5 プロジェクトでは、com.sun.webui.jsf.model.Option を選択します。
    • J2EE 1.4 プロジェクトでは、com.sun.rave.web.ui.model.Option を選択します。
  11. 「了解」をクリックします。
  12. init メソッドまでスクロールし、メソッドの末尾に次の太字のコードを追加します。

    コード例 2:アプリケーション Bean の init メソッドに追加するコード
            // TODO - add your own initialization code here
            // 票項目を投入する
            ballotOptions = new Option[] {
                new Option("java", "Java プログラミング言語"),
                new Option("cpp", "C++"),
                new Option("fortran", "Fortran")
            };
    
            // 票選択のカウンタを初期化する
            tally = new HashMap();
            for (int i=0; i < ballotOptions.length; i++) {
                this.tally.put(ballotOptions[i].getValue(), "0");
            }
  13. ファイルの末尾、最後の終了中括弧の直前に、次のメソッドを追加します。

    コード例 3:アプリケーション Bean 票集計 メソッド
        /**
         * プロパティー tally の票集計。
         */
        public void incrementTallyFor(String category) {
            int count = getTallyFor(category);
            count++;
            this.tally.put(category, Integer.toString(count));
        }
    
        /**
         * プロパティー tally の値の取得メソッド。
         * @param カテゴリ HashMap キー
         * @return 指定されたキーがマップされる値
         */
        public int getTallyFor(String category) {
            String stringCount = (String) this.tally.get(category);
            if (stringCount == null) {
                return 0;
            } else {
                int count = Integer.valueOf(stringCount).intValue();
                return count;
            }
        }
    
  14. Ctrl-S キーを押して、変更を保存したあと、Ctrl-F4 キーを押して、ファイルを閉じます。
  15. 「アウトライン」ウィンドウで「SessionBean1」を右クリックして、ポップアップメニューから「追加」>「プロパティー」を選択します。

    注:「アウトライン」ウィンドウが開いていない場合は、編集領域にある「Page1」タブをクリックし、編集ツールバーにある「デザイン」をクリックします。IDE がデザインモードの場合、「アウトライン」ウィンドウが表示されます。
  16. 次のように、プロパティーの名前と型を設定し、「了解」をクリックします。

    テキストフィールド
    名前 hasVoted
    タイプ Boolean

  17. 「アウトライン」ウィンドウで「SessionBean1」を右クリックして、ポップアップメニューから「Java ソースを編集」を選択します。
  18. init メソッドまでスクロールし、メソッドの末尾に次の太字のコードを追加します。

    コード例 4:セッション Bean の init メソッドに追加するコード
            // TODO - add your own initialization code here
            setHasVoted(false);
  19. Ctrl-S キーを押して、変更を保存したあと、Ctrl-F4 キーを押して、ファイルを閉じます。
  20. 「アウトライン」ウィンドウで「RequestBean1」を右クリックして、ポップアップメニューから「追加」>「プロパティー」を選択します。
  21. 次のように、プロパティーの名前と型を設定し、「了解」をクリックします。

    テキストフィールド
    名前 timestamp
    タイプ java.util.Date

  22. 「アウトライン」ウィンドウを確認し、要求 Bean 、セッション Bean、およびアプリケーション Bean のプロパティーが次の図に一致することを確認します。timestamp プロパティーを表示するために、RequestBean1 の Java ソースコードを開いて、保存する必要がある場合があります。

    図 4:要求 Bean プロパティー、セッション Bean プロパティー、およびアプリケーション Bean プロパティー 図 4:要求 Bean プロパティー、セッション Bean プロパティー、およびアプリケーション Bean プロパティー

開始ページの作成

この節の手順に従って、アプリケーションを実行するとブラウザに表示される、次の図に示すページを作成します。ユーザーが「票を送信」ボタンをクリックした場合、ページはユーザーの票を送信します。ユーザーが 1 度投票を行うと、ボタンは無効になり、ユーザーがそのセッションで再度投票できないようになります。

図 5:Page1 図 5:Page1
  1. 「パレット」の「基本」セクションから「ラベル」コンポーネントをドラッグし、ページ上部の中央にドロップして、ラベルのテキストを、「読者投票: 好きなプログラミング言語は何ですか?」に設定します。.
  2. 「ラジオボタングループ」コンポーネントを「ラベル」コンポーネントの下にドロップします。
  3. 「プロパティー」ウィンドウで、コンポーネントの「id」プロパティーを「voteRBGroup」に設定します。
  4. 「ラジオボタングループ」コンポーネントを右クリックし、ポップアップメニューから「データにバインド」を選択します。

    「データにバインド」ダイアログが表示されます。
  5. ダイアログの「オブジェクトにバインド」タブで、「ApplicationBean1」>「ballotOptions」を選択し、「了解」をクリックします。
  6. 「ラジオボタングループ」コンポーネントの下に「ボタン」をドロップし、そのテキストを「結果を表示」に設定します。
  7. 「プロパティー」ウィンドウで、「id」プロパティーを「viewButton」に設定します。
  8. action」プロパティーの省略符号ボタン (...) をクリックし、ドロップダウンリストから「viewButton_action」を選択し、「了解」をクリックします。

    IDE は null を返す viewButton_action イベントハンドラを追加します。
  9. 「ボタン」コンポーネントを、「結果を表示」ボタンの右にドロップし、そのテキストを「票を送信」に設定します。
  10. 「プロパティー」ウィンドウで、「id」プロパティーを「voteButton」に設定します。
  11. disabled」プロパティーの省略符号ボタン (...) をクリックします。

    ダイアログが表示されます。
  12. ダイアログで、「バインドを使用」を選択し、「オブジェクトにバインド」タブをクリックしたあと、次の図に示すように、「SessionBean1」>「hasVoted」を選択し、「了解」をクリックします。

    図 6:「disabled」プロパティーのバインド 図 6:「disabled」プロパティーのバインド
  13. 「票を送信」ボタンをダブルクリックします。

    IDE は、voteButton_action イベントハンドラを追加し、ページの Java ソースを開いて、そのメソッドを表示します。
  14. メソッドの本体を次のコード (太字部分) に置き換えます。

    コード例 5:voteButton_action メソッド
        public String voteButton_action() {
    
        if (voteRBGroup.getSelected() == null) {
            return null;
        }
    
        // 票集計は、すべてのユーザーセッション間で保持されます
        String votedFor = voteRBGroup.getSelected().toString();
        getApplicationBean1().incrementTallyFor(votedFor);
    
        // ユーザーは、1 セッションにつき 1 票、投票できます
        getSessionBean1().setHasVoted(true);
    
        // 次の要求が終了したあと、timestamp は必要ありません
        Date now = new Date();
        getRequestBean1().setTimestamp(now);
    
        return null;
        }
  15. ソース内で右クリックし、ポップアップメニューから「インポートを修正」を選択します。
  16. 「インポートを修正」ダイアログで「完全修飾名」ドロップダウンリストから、「java.util.Date」を選択し、「了解」をクリックします。

結果ページの作成

次の手順に従って、次の図に示すブラウザで実行されているようなページを作成します。このページは、現在の票集計を表示しています。「結果を再表示」ボタンをクリックして、ページが最後に表示されてからほかのユーザーが送信した票を含む、最新の票集計を取得することができます。

図 7:結果 図 7:結果
  1. 「プロジェクト」ウィンドウで、「Scopes」プロジェクトの下の「Web ページ」ノードを右クリックし、「新規」>「ページ」を選択します。ページに「Results」という名前をつけ、「完了」をクリックしてページを作成します。
  2. 「ラベル」コンポーネントを Results ページ上部の中央にドロップし、テキストを「結果」に設定します。
  3. 「ボタン」コンポーネントを「ラベル」コンポーネントの左にドロップし、そのテキストを「ホーム」に設定します。
  4. ボタンの「id」プロパティーを「homeButton」に設定します。
  5. action」プロパティーの省略符号ボタン (...) をクリックし、ドロップダウンリストから「homeButton_action」を選択し、「了解」をクリックします。
  6. 「ボタン」コンポーネントを「ラベル」コンポーネントの右にドロップし、そのテキストを「結果を再表示」に設定します。
  7. ボタンの「id」プロパティーを「refreshButton」に設定します。
  8. action」プロパティーの省略符号ボタン (...) をクリックし、ドロップダウンリストから「refreshButton_action」を選択し、「了解」をクリックします。
  9. 「パレット」の「レイアウト」セクションから、「グリッドパネル」コンポーネントをドラッグし、「ラベル」コンポーネントの下にドロップします。
  10. 「プロパティー」ウィンドウで、「cellspacing」プロパティーを「10」に設定し、「columns」プロパティーを「1」に設定します。
  11. 「静的テキスト」コンポーネントを「グリッドレイアウト」コンポーネント内にドラッグします。「グリッドレイアウト」コンポーネントの輪郭が、青の実線になったら、次の図に示すように、「静的テキスト」コンポーネントをドロップします。

    図 8:コンポーネントの「グリッドパネル」コンポーネントへのドロップ 図 8:コンポーネントの「グリッドパネル」コンポーネントへのドロップ
  12. 「プロパティー」ウィンドウで、「静的テキスト」コンポーネントの「id」プロパティーを「resultsST」に設定します。「text」プロパティーは空白のままにします。
  13. escape」プロパティーのチェックボックスの選択を解除します。

    あとで、コンポーネントの「text」プロパティーに HTML を配置するコードを追加します。「escape」プロパティーを False に設定することで、HTML コードがそのままブラウザに渡されるようになります。
  14. 別の「静的テキスト」コンポーネントを「グリッドパネル」コンポーネントの上にドラッグし、「グリッドレイアウト」コンポーネントの輪郭が青の実線になったら、「静的テキスト」コンポーネントをドロップします。
  15. 「静的テキスト」コンポーネントの「id」プロパティーを「messageST」に設定します。「text」プロパティーは空白のままにします。
  16. 編集用ツールバーの「Java」をクリックして、ページのJava ソースを表示します。
  17. 「アウトライン」ウィンドウで、prerender メソッドをダブルクリックして Java エディタで開き、次の太字のコードを追加します。

    コード例 6:prerender メソッド
        public void prerender() {
          // 最新の投票結果を表示する
          ApplicationBean1 appBean = getApplicationBean1();
          Option[] choices = appBean.getBallotOptions();
          String str = "<table border=\"0\" cellpadding=\"5\">";
          for (int i = 0; i < choices.length; i++) {
            int count =
              appBean.getTallyFor(choices[i].getValue().toString());
            str = str + "<tr><td>" +
              choices[i].getLabel() +
              "</td><td>" +
              count +
              "</td></tr>";
          }
          str = str + "</table>";
          resultsST.setText(str);
    
          RequestBean1 reqBean = getRequestBean1();
          Date timestamp = (Date) reqBean.getTimestamp();
          if (timestamp != null) {
            messageST.setText("投票した時間: " +
              (String)DateFormat.getTimeInstance(DateFormat.LONG).format(
              timestamp));
          }
        }

    このコードは、各票の票集計を含む HTML 表を作成し、最初の「静的テキスト」コンポーネントの「text」プロパティーに HTML 表を配置します。ユーザーが投票すると、票が登録された日時が 2 番目の「静的テキスト」コンポーネントに表示されます。
  18. ソース内で右クリックし、ポップアップメニューから「インポートを修正」を選択します。
  19. 「Date」クラス名の「完全修飾名」ドロップダウンリストから「java.util.Date」を選択します。
  20. 「Option」クラス名の「完全修飾名」ドロップダウンリストから、プロジェクトで使用している Java EE のバージョンに応じた名前を選択します。

    • Java EE 5 プロジェクトでは、com.sun.webui.jsf.model.Option を選択します。
    • J2EE 1.4 プロジェクトでは、com.sun.rave.web.ui.model.Option を選択します。

ページナビゲーションの指定

次の手順に従って、次の図に示すように、ボタンにページナビゲーションを指定します。

図 9:ページナビゲーションエディタ 図 9: ページナビゲーションエディタ
  1. 編集領域で、「Results」タブをクリックし、「デザイン」をクリックして、ビジュアルデザイナーのページを表示します。
  2. ページの空白の部分を右クリックし、ポップアップメニューから「ページナビゲーション」を選択します。
  3. Page1.jsp のアイコンをクリックして、アイコンを拡大します。
  4. 「viewButton」の横のコネクタポートをクリックし、Results.jsp にドラッグしてボタンと結果ページとの間のコネクタを作成します。
  5. コネクタのラベルをダブルクリックして編集モードにし、ダブルクリックしてテキスト選択し、「view results」と入力し、Enter キーを押します。
  6. Page1.jsp のアイコンをクリックしてもう一度アイコンを拡大し、「voteButton」の横のコネクタポートをクリックして、Results.jsp にドラッグします。
  7. コネクタのラベルをダブルクリックして編集モードにし、ダブルクリックしてテキスト選択し、「vote」と入力し、Enter キーを押します。
  8. Results.jsp のアイコンをクリックして、アイコンを拡大します。
  9. 「homeButton」の横のコネクタポートをクリックし、Page1.jsp にドラッグします。
  10. コネクタのラベルをダブルクリックして編集モードにし、ダブルクリックしてテキストを選択して、「home」と入力し、Enter キーを押します。

アプリケーションの実行

同じブラウザから複数のセッションを利用可能にするには、休止状態が 1 分間続いたあと、各セッションを終了するように、アプリケーションを設定します。そして、アプリケーションを配備し、実行します。
  1. 「ファイル」ウィンドウで、次の図に示すように、「Scopes」>「web」>「WEB-INF」を展開します。

    図 10:「ファイル」ウィンドウ 図 10:「ファイル」ウィンドウ
  2. 「web.xml」を右クリックし、ポップアップメニューから「開く」を選択します。
  3. 次の図に示すように、「セッションタイムアウト」テキストボックスに「1」と入力します。

    図 11:web.xml ビジュアルエディタでのセッションタイムアウトの設定 図 11:web.xml ビジュアルエディタでのセッションタイムアウトの設定
  4. ファイルを閉じて保存します。
  5. メインツールバーにある「主プロジェクトを実行」ボタンをクリックします。
  6. 開始ページが表示されたら、ラジオボタンを選択し、「票を送信」をクリックします。

    ブラウザに結果ページが表示されます。結果ページは票を送信した時間を表示します。
  7. 「ホーム」ボタンをクリックして開始ページに戻ります。

    投票を終えたので、「票を送信」ボタンは無効になります。
  8. 「結果を表示」ボタンをクリックします。

    結果ページは投票した時間を表示しなくなります。これは、前の要求 Bean がスコープ外にあり、新しい要求 Bean がインスタンス化されたためです。
  9. セッションがタイムアウトするまで、1 分間待ちます。そして、ブラウザのアドレステキストボックスに、「http://localhost:8080/Scopes」と入力し、Enter キーを押して新しいセッションを開始します。デフォルトのサーバー構成を使用していない場合は、8080 を異なるポートに変更する必要がある場合があります。
  10. 再度投票を行い、結果を確認します。結果には、最初の投票が含まれています。
  11. 別のブラウザを使用できる場合は、ブラウザを開始し、ブラウザのアドレステキストフィールドに「http://localhost:8080/Scopes」と入力して、Enter キーを押します。票を送信します。
  12. 最初のブラウザで、結果ページから「結果を再表示」をクリックします。

    結果には、2 番目のブラウザから送信した票が含まれています。

その他の可能な操作

このチュートリアルの手順を使用して、ログイン名の入力を求めるアプリケーションを構築してみましょう。Web アプリケーションにアクセスした一意のユーザーの数を表示するページも追加してみてください。

まとめ

情報を保存してほかのページで使用するには、アプリケーション Bean、セッション Bean、および要求 Bean を使用します。

  • アプリケーション Bean は、「ドロップダウンリスト」コンポーネントの静的なオプションリストなど、すべてのユーザーセッションに適用される情報に使用します。
  • セッション Bean は、ユーザーのログイン名など、ユーザーのセッション中にほかのページで使用する情報を保存するために使用します。
  • 次のページで使用する情報を保存するだけの場合は、要求 Bean を使用します。

警告:ナビゲーション規則の <navigation-case> 要素内に <redirect> 要素を追加した場合は、要求 Bean を使用できません。

要求 Bean、セッション Bean、あるいはアプリケーション Bean は、ページがプロパティーにアクセスするとすぐにインスタンス化されます。Bean はスコープが終了するときに破棄されます。

セッション Bean にプロパティーを追加するには、「アウトライン」ウィンドウでセッション Bean ノードを右クリックし、「追加」>「プロパティー」を選択します。要求 Bean やアプリケーション Bean にプロパティーを追加する場合も、同様の手順に従います。


>> Visual Web Pack のほかのドキュメント


更新日: 2007 年 5 月 24 日


Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   Open JDK: an Open SourceJDK   GlassFish Community: an Open Source Application Server    Mobile & Embedded Community    Open Solaris   java.net - The Source for Java Technology Collaboration   Virtual Box - full virtualizer  Open ESB - The Open Enterprise Service Bus Powered by