Jsp は Javabean コマンドを呼び出します。UseBean には Scope の設定があり、一般的には、
UseBean 内の新しい Javabean オブジェクトであり、複数の Jsp プログラムがデータを共有する場合に使用されます。
セッション
とアプリケーションは、セッションと比較して、アプリケーションに対して相対的なもので
あり
、ユーザーが離れるとセッションは消えます
。. は、サーブレット プログラムに似ており
、システム全体の「グローバル変数」に似ており、インスタンスは 1 つだけです。
MVC の制御機能
したがって、アプリケーション機能は MVC の制御機能に非常に適しています。一般
に
、従来の MVC は制御機能にサーブレットを使用し、M はミドルウェア Javabean です。しかし、Jsp の機能の改善と推進に伴い、実際に
は
サーブレットの代わりに Jsp が使用されることが多くなり、特にその制御機能が強化されています。実際、この制御関数は Javabean にカプセル化されており、Jsp はscope=application を使用してこの Javabean を呼び出します。このように
、制御関数を備えた Javabean はメモリ内に常駐するサーブレットのようなもので、さまざまなバックグラウンド ミドルウェアと対話します。
実際のアプリケーション
では、複数のユーザーが同時にページにアクセスすることがよくあります。このホームページでは、
ディレクトリ分類などの多くの機能が実行されます。データベースからツリー データを読み取り、展開してホームページに出力する必要があります。この関数は Javabeans でカプセル化されます。
次に、ホームページ JSP がこの Javabean を呼び出すときに、scope=application を使用して、ツリー データ バッファリング アルゴリズムを使用します。これにより、複数の
ユーザーが
同時にホームページにアクセスするときに、ホームページ JSP は毎回 Javabean を起動する必要がなくなります。そしてデータベースを繰り返し読み取ります。大幅にスピードが上がることは間違いありません。
したがって、ホームページ Jsp のアクセス数が多い場合は、最適化により多くの時間を費やす必要があります。
データベース接続のバッファリング
< jsp:useBean id="cods"
class="oracle.jdbc.pool.OracleConnectionCacheImpl"
スコープ="アプリケーション" />
< イベント:application_OnStart>
<%
cods.setURL("jdbc:oracle:thin:@HOST:PORT:SID");
cods.setUser("スコット");
cods.setPassword("タイガー");
cods.setStmtCache (5);
%>
< /event:application_OnStart>
< %@ page import="java.sql.*, javax.sql.*, oracle.jdbc.pool.*" %>
< !------------------------------------------------ ----------------
* これは、接続キャッシュを使用する JavaServer ページです。
応用
* スコープ。キャッシュはアプリケーション スコープ内に作成されます。
globals.jsa ファイル。
* 接続はキャッシュから取得され、一度リサイクルされます。
終わり
。 -
- - - - - - - - - - - - - - - - - - - - - - ---------------------!>
<HTML>
<頭>
<タイトル>
ConnCache JSP
< /TITLE>
< /HEAD>
<BODY BGCOLOR=EOFFFO>
<H1>こんにちは
< %= (request.getRemoteUser() != null? ", " +
request.getRemoteUser() : "") %>
! 私は接続キャッシュ JSP です。
< /H1>
<人事>
< B> キャッシュから接続を取得し、それをリサイクルして戻します。
</B>
<P>
<%
試す {
接続 conn = cods.getConnection();
ステートメント stmt = conn.createStatement ();
ResultSet rset = stmt.executeQuery ("SELECT ename, sal " +
"scott.emp から ename で注文");
if (rset.next()) {
%>
< TABLE BORDER=1 BGCOLOR="C0C0C0">
< TH WIDTH=200 BGCOLOR="white"> < I>従業員名</ I> </ /TH>
< TH WIDTH=100 BGCOLOR="white"> < I>給与</I> </ /TH>
< TR> < TD ALIGN=CENTER> < %= rset.getString(1) %> < /TD>
< TD ALIGN=CENTER> $< %= rset.getDouble(2) %> < /TD>
< /TR>
< % while (rset.next()) {
%>
< TR> < TD ALIGN=CENTER> < %= rset.getString(1) %> < /TD>
< TD ALIGN=CENTER> $< %= rset.getDouble(2) %> < /TD>
< /TR>
< % }
%>
< /TABLE>
< % }
それ以外 {
%>
< P> 申し訳ありませんが、クエリは行を返しませんでした。</ P>
<%
}
rset.close();
stmt.close();
conn.close(); // 接続をプールに戻します
} キャッチ (SQLException e) {
out.println("< P>" + "クエリの実行中にエラーが発生しました:");
out.println ("< PRE>" + e + "< /PRE>
<P>");
}
%>
< /BODY>
< /HTML>
アプリケーションを使用してデータベース接続をキャッシュします。接続は使用されるたびにバッファから取り出され、使用後に返されます。