ウェルカム ページ welcome.jsp
ユーザーが正しいパスワードを入力すると、switch.jsp は JSP ページを制御して、welcome.jsp ウェルカム ページを作成します。このセクションでは、welcome.jsp ページを開発します。 welcome.jsp はサードパーティのタグ ライブラリを使用する必要があるため、welcome.jsp を開発する前に、JBuilder でいくつかの設定を行ってこのタグ ライブラリを導入する必要があります。
サードパーティのタグ ライブラリを JBuilder に設定する
Apache オープン ソース組織は、多くの便利なタグ ライブラリを提供しています。ウェルカム ページ welcome.jsp は、Apache の datetime タグ ライブラリを使用する必要があります。このタグ ライブラリを使用して、JSP でさまざまな時刻表示を行うことができます。ダウンロード アドレスは /u/info_img です。 /2009-07/02/jakarta-taglibs-datetime-1.0.1.zip。
タグ ライブラリには通常、2 つのファイルが含まれています。1 つはクラス パッケージ JAR ファイルで、もう 1 つは拡張子 .tld を持つタグ記述ファイルです。ダウンロードした圧縮ファイルを解凍した後、taglibs-datetime.jar ファイルと taglibs-datetime.tld ファイルを <プロジェクト ディレクトリ>/datetimeTag ディレクトリに配置します。
プロジェクトでサードパーティのタグ ライブラリを使用するには、事前に JBuilder でタグ ライブラリを設定し、プロジェクトでそれを参照する必要があります。タグ ライブラリの構成はクラス ライブラリの構成と似ており、これも [ライブラリの構成] ダイアログ ボックスで行います。 JBuilder クラス ライブラリとタグ ライブラリは、[ライブラリの構成] ダイアログ ボックスの左側のツリーにリストされます。クラス ライブラリは次のように表示されます。アイコン、タグ ライブラリは次のように表示されます。アイコン。次に、日時タグ ライブラリを JBuilder に設定します。
1. [ツール] -> [構成] -> [ライブラリ] -> [ライブラリの構成] ダイアログ ボックス。
[ライブラリの構成] ダイアログ ボックスの左下隅にある [追加...] ボタンをクリックすると、以下に示すように [新しいライブラリ ウィザード] ダイアログ ボックスが表示されます。
図 17 [新しいライブラリ ウィザード] ダイアログ ボックス |
[名前: datetimeTag] にこのライブラリの名前を付け、[OK] を押して [ライブラリの構成] ダイアログ ボックスに戻ります。
2.タグライブラリファイルを指定します。
[ライブラリの構成] ダイアログ ボックスに戻ると、左側のツリーに datetimeTag ノードが表示されます。このノードは、クラス ライブラリ ファイルが指定されていないため、他のノードとは異なり、目立つ赤色で表示されます。以下に示すように、タブページでフレームワークに移動します。
図 18 フレームワークへの切り替え |
[フレームワーク] ドロップダウン ボックスで [ユーザー定義の JSP タグ ライブラリ] オプションを選択し、タブ ページの右下にある [追加...] ボタンをクリックすると、図に示すように、[新しいタグ ライブラリの定義] ダイアログ ボックスが表示されます。下に:
図19 タグライブラリを指定する記述ファイル |
[新しいタグ ライブラリの定義] ダイアログ ボックスで、TLD ファイルの後ろにある [...] ボタンをクリックし、<プロジェクト ディレクトリ>/datetimeTag/taglibs-datetime.tld ファイルに移動します。通常、確認後、JBuilder によって残りの設定が自動的に入力されます。これらの JBuilder 自動補充設定を変更する必要はありません。このうちPrefixは、このタグライブラリの参照プレフィックスを指定します。 [OK] ボタンをクリックして [ライブラリの構成] ダイアログ ボックスに戻ります。以下に示すように、datetimeTag ノードが通常の色で表示されます。
図 20 タグ ライブラリを正しく構成した後の効果 |
[ライブラリの構成] ダイアログ ボックスで [OK] ボタンをクリックして、日時タグ ライブラリの構成を完了します。
3.現在のプロジェクトでこの新しく構成されたタグ ライブラリを参照します。
「プロジェクト」->「プロジェクトのプロパティ...」->「パス」->「必須ライブラリ」タブに切り替えて、「追加...」ボタンをクリックして JBuilder クラス ライブラリから datetimeTag を選択します。設定が成功すると、[プロジェクト プロパティ]ダイアログ ボックスは次のように表示されます。
図 21 プロジェクト参照ライブラリ |
ウェルカム JSP ページを作成する
1. 「ファイル」->「新規…」->「Web」->「JSP」アイコンをダブルクリックして JSP 作成ウィザードを開始し、JSP ファイル名を「ようこそ」として指定し、「次へ」をクリックして次のステップに進みます。
2. welcome.jsp ページの datetimeTag タグ ライブラリを参照します。
ウィザードのステップ 2 では、次の図に示すように、前のセクションで構成した datetimeTag タグ ライブラリも [タグ ライブラリ] リストに表示されます。
図 22 参照タグ ライブラリ |
datetime タグを展開して taglibs-datetime をチェックし、「次へ」をクリックして次のステップに進みます。
3. switch.jsp内のセッションドメインに配置されたuserBeanオブジェクトを参照します。
図 23 switch.jsp のセッションに配置された userBean の参照 |
「Bean の追加...」をクリックして、bookstore.User クラスを選択し、ID 列で Bean 名を ses_userBean として指定し、「スコープ」列でセッション スコープを選択します。 ses_userBean は、switch.jsp で userBean に指定された名前です。Web コンテナは、この名前に基づいてセッション内でオブジェクトを検索します。これは、switch の後に welcome.jsp が呼び出されるからです。 .jsp なので、セッションが期限切れにならない限り、userBean オブジェクトを見つけることができます。
「完了」を直接クリックして、welcome.jsp ファイルを作成します。コードは次のとおりです。
コード リスト 15 welcome.jsp のウェルカム ページ
1. <%@ ページ contentType="text/html; charset=GBK" %> 2. <%@ taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt" %> 3.<html> 4. <頭> 5. <タイトル> 6.ようこそ 7. </title> 8. </頭> 9. <jsp:useBean id="ses_userBean"scope="session" class="bookstore.User" /> 10. <jsp:setProperty name="ses_userBean" property="*" /> 11. <本文 bgcolor="#ffffff"> 12. <h1> 13. JBuilder で生成された JSP 14. </h1> 15. </本文> 16. </html> |
ウィザードの手順2で参照するタグライブラリは、2行目の参照先タグライブラリ宣言コードに対応して設定されます。手順 3 で設定した Bean はコードの 9 ~ 10 行目に相当します。welcome.jsp には Bean の値を記入する必要がないため、10 行目のコードを手動で削除します。
次に、welcome.jsp ファイル内の datetime タグ ライブラリを参照し、それを使用して現在の時刻形式の文字列を生成します。 welcome.jsp ファイルを開き、ソース ビュー ページに切り替えます。まず、<body></body> で JBuilder によって生成されたコードをクリアし、<body></body> に「<dt:」を入力します。次のように、JBuilder は TagInsight 関数を使用して、このタグ ライブラリで使用可能なすべてのタグ項目を表示します。図に示すように:
図 24 TagInsight を使用してタグ ライブラリに入る
TagInsight を使用すると、タグ ライブラリに利用可能なタグを簡単に入力できます。これにより、タグ ライブラリのコード入力が大幅に高速化され、正確さが保証されます。 welcome.jsp では、タグ ライブラリを使用して現在の形式の時刻文字列を取得します。さらに、ses_userBean を通じてユーザー名も取得します。 welcome.jsp の最終的なコードは次のようになります。
コード リスト 16 welcome.jsp はタグ ライブラリとセッション オブジェクトを参照します。
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp" %> 2. <%@taglib uri="http://jakarta.apache.org/taglibs/datetime-1.0" prefix="dt"%> 3.<html> 4. <頭> 5. <タイトル>ようこそ</タイトル> 6. </頭> 7. <jsp:useBean id="ses_userBean"scope="session" class="bookstore.User"/> 8. <body bgcolor="#ffffff">あなたは 9. <%=ses_userBean.getUserName()%> さん、ログインへようこそ。 <br> 10. 現在時刻は<dt:format pattern="MM/dd/yyyy hh:mm"><dt:currentTime/></dt:format>です。 11. <br><a href="quit.jsp">ここをクリック</a>してシステムを終了します 12. </本文> 13. </html> |
さらに、JBuilder は日時タグ ライブラリ記述ファイル taglibs-datetime.tld を WEB-INF にコピーし、web.xml ファイルを改ざんして taglibs-datetime.tld のアドレスを宣言しました。
コード リスト 17 web.xml でのタグ記述ファイルの宣言
1. <?xml version="1.0" encoding="UTF-8"?> 2.… 3. <ウェブアプリ> 4. <タグリブ> 5. <taglib-uri>http://jakarta.apache.org/taglibs/datetime-1.0</taglib-uri> 6. <taglibの場所>/WEB-INF/taglibs-datetime.tld</taglibの場所> 7. </taglib> 8. </web-app> |
上に示したように、web.xml の 4 ~ 7 行目では、Web コンテナが必要な情報を正しく見つけられるように、JBuilder によって日時タグ ライブラリの記述ファイルが自動的に追加されます。
プロジェクトをコンパイルして Web ディレクトリを生成するときに、JBuilder は日時タグ ライブラリの JAR ファイル taglibs-datetime.jar を WEB-INF/lib ディレクトリにコピーします。
ユーザーが正常にログインすると、welcome.jsp ページにリダイレクトされます。ページの効果は次のとおりです。
図 25 welcome.jsp エフェクト ページ |
ユーザーが「ここ」のリンクをクリックすると、quit.jsp にリンクされます。quit.jsp ページは、セッションをクリアした後、セッション内で参照されているオブジェクトのバインドを解除し、リソースを解放します。
quit.jsp 終了処理ページ
HTTP プロトコルはリクエスト/レスポンス方式で動作するため、クライアントがシステムを終了するときは、Web サーバーにリクエストを積極的に送信して、時間内にセッションを破棄するように Web サーバーに通知する必要があります。そうしないと、Web サーバーは待機するだけになります。セッションの有効期限が切れるまで、セッションを破棄します。
quit.jsp を使用して、ユーザーのシステムからの終了を処理します。quit.jsp は、セッションをログアウトし、適切なタイミングでリソースを解放します。
·セッションをログアウトします。
・ブラウザウィンドウを閉じます。
コードは次のとおりです。
1. <%@ ページ contentType="text/html; charset=GBK" %> 2.<% 3. session.invalidate(); 4.%> 5. <スクリプト言語=”JavaScript”> 6. window.opener = null; 7. window.close(); 8. </スクリプト> |
行 3 は、セッションからログアウトする役割を果たします。最初にセッションに配置されたオブジェクトはバインドが解除され、ガベージ コレクションがリソースを解放するのを待ちます。この例では、セッション内に ses_userBean という名前の userBean オブジェクトがあります (これは switch.jsp のセッションに置かれます)。 session.invalidate() を呼び出した後、userBean はセッションからアンバインドされ、その valueUnbound() メソッドが実行されます。がトリガーされてから、ガベージ コレクションを待ちます。
5 行目から 8 行目は、ウィンドウを閉じる JavaScript スクリプト プログラムです (window.open()) を使用して Web ページを開かない場合は、window.close() を呼び出す前に window.opener オブジェクトを設定する必要があります。行 6 に示すように、ウィンドウを閉じるためのスクリプトが null である場合、ブラウザは閉じることを確認するダイアログ ボックスをポップアップ表示します。この問題が多くの Web プログラマを悩ませていることに著者は気づいたので、特に指摘しました。
実務経験:
ユーザーがシステムを終了するときは、セッションをログアウトする必要があります。ログアウトしないと、サーバーでセッションが期限切れになるまでセッション オブジェクトはクリアされません。セッションの最大非アクティブ時間は 30 分 (デフォルト時間) であると仮定します。セッション オブジェクトが手動でクリアされない場合、これらのオブジェクトによって占有されていたシステム リソースは、ユーザーがシステムを終了してから 30 分が経過するまで解放されません。 |