Oracle Application Server Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス 10g 部品番号: A97678-01 |
|
このトピックでは、次のような各種の一般ユーティリティ機能について説明します。これらの機能は、OC4JでJSPページに使用できます。
通常、Webサイトのステータスやユーザー・アクションなどに基づいて、Webアプリケーションから電子メール・メッセージを送信できると便利です。Sun社はそのために、JavaMail APIと呼ばれるjavax.mail
パッケージおよびサブパッケージを介して、プラットフォームにもプロトコルにも依存しないフレームワークを指定しています。
利便性を高めるために、OracleはJavaMail APIに基づいてJavaBeanとJSPカスタム・タグを用意しており、サーブレットやJSPページを介して電子メール機能を提供する際に使用されます。Beanとタグは、OC4Jで提供される他のJavaBeansやカスタム・タグと同様に、JSPとサーブレットの標準に従って実装されます。
この項では、メールJavaBeanおよびタグについて説明します。この項の内容は、次のとおりです。
JavaMail APIの詳細は、Sun社の次のWebサイトを参照してください。
http://java.sun.com/products/javamail/1.2/docs/javadocs/index.html
メールJavaBean(SendMailBean
)またはメール・タグ(sendMail
)の使用に適用される注意事項は、次のとおりです。
mail.jar
と、JavaBeans Activation Framework用のファイルjaf.jar
がCLASSPATHに指定されている必要があります。この2つのファイルはOC4Jで提供されます。
sendmail.properties
がアプリケーションの/WEB-INF
ディレクトリに存在する必要があります(OC4Jデモ・インスタンスにはデフォルトで存在しますが、添付を無効化するように設定されています)。「添付の有効化」を参照してください。
Oracle9iASリリース2(9.0.3)のメールBeanおよびタグは、電子メール・メッセージと添付ファイルの送信をサポートしています。次の3つの操作モードがあります。
クライアント側添付の場合、ファイルはプロセスの一部として自動的にサーバー・マシンにアップロードされます。複数のクライアント側添付はサポートされていません。
デフォルトでは、セキュリティ上の理由で、メール・タグとメールBeanの両方についてメール添付機能が無効化されます。添付が有効化されるかどうかと添付の種類は、アプリケーションの/WEB-INF
ディレクトリにあるsendmail.properties
ファイルにより決定されます。OC4Jデモ・インスタンスの場合は、このファイルがデフォルトで存在し、次のように設定されています。
## email attachment permissions sendmail.attachment=none
このファイルを/WEB-INF
にコピーするか、新規に作成して、メール添付を使用する他のOC4Jインスタンスにあわせて更新する必要があります。
単一アプリケーションでサポートできるのはサーバー側添付またはクライアント側添付のみで、両方はサポートできません。
サーバー側添付を有効化するには、次のように設定をserver
に変更します。
sendmail.attachment=server
クライアント側添付を有効化するには、次のように設定をclient
に変更します。
sendmail.attachment=client
複数の値を設定するとエラーになります。
メール・タグについてサーバー側添付が有効化されていて、メッセージに添付するサーバー側ファイルを1つ以上指定する必要がある場合は、serverAttachment
タグ属性を使用します。クライアント側添付が有効化されていて、メッセージに添付するクライアント側ファイル(最大1ファイル)を指定する必要がある場合は、clientAttachment
タグ属性を使用します。「sendMailタグの説明」を参照してください。1つのアプリケーションについてサポートできるのは2つの添付モードの一方のみで、両方はサポートできないことに注意してください。
サーバー添付モードとクライアント添付モードのどちらの場合も、メールBeanには添付対象ファイルの名前を指定または取得するためのメソッドが組み込まれています。「SendMailBeanメソッドの説明」でsetServerAttachment()
、getServerAttachment()
、setClientAttachment()
およびgetClientAttachment()
に関する情報を参照してください。
メール・タグまたはメールBeanを使用すると、添付するサーバー側ファイルのリストにはデリミタとしてカンマまたはセミコロンを使用できますが、空白は使用できません(一部のオペレーティング・システムでファイル名に空白が許容される場合)。
メール・タグとメールBeanの両方に適用されるメール添付の使用上の注意事項は、次のとおりです。
httpUpload
タグが使用されます。ファイルはOC4Jサーバー・マシンの一時ディレクトリにアップロードされた後、メッセージの送信後に削除されます。 httpUpload
タグの制限は、クライアント側メール添付にも適用されます。「ファイル・アクセスJavaBeansおよびタグ」を参照してください。
OC4Jには、サーブレットまたはJSPアプリケーションからの電子メール機能をサポートするために、oracle.jsp.webutil.email.SendMailBean
JavaBeanが用意されています。このJavaBeanをJSPページで使用するには、標準jsp:useBean
タグを介してインスタンス化できます(ただしJSPアプリケーションの場合、通常はSendMailBean
のかわりにsendMail
タグを使用します。「sendMailタグの説明」を参照してください)。
SendMailBean
を使用するには、ファイルojsputil.jar
、mail.jar
およびactivation.jar
がインストール済でCLASSPATHに指定されていることを確認します。これらのファイルはOC4Jで提供されます。
コードでSendMailBean
を使用する場合は、次の情報を指定する必要があります。
setSender()
メソッドを使用して送信者を指定します。
setRecipient()
メソッドを使用して主要受信者を1人以上指定します。
javax.mail.Session
)(直接または間接)
JavaMailセッションを指定するには、次の3つの方法があります。
setHost()
メソッドを使用してホスト・システムを指定します。この場合、JavaMailセッション・オブジェクトは自動的に作成されます。
setMailSession()
メソッドを使用してJavaMailセッション・オブジェクトを直接指定します。
setSession()
メソッドを使用して、JSPページ・コンテキスト内の"session string, javax.mail.Session
object"ペアを介してアクセス可能な既存のJavaMailセッション・オブジェクトの名前を指定します。この場合は、sendMessage()
メソッドをコールして電子メール・メッセージを送信する際に、入力パラメータとしてページ・コンテキスト・インスタンスを指定する必要があります。
他のSendMailBean
属性はすべてオプションです。
この項では、メール・メッセージの送信、メール・セッションのクローズ、Bean属性の設定または取得に使用するSendMailBean
のメソッドをリスト形式で説明します。
SendMailBean
のpublicメソッドは次のとおりです。
void sendMessage()
void sendMessage(javax.servlet.jsp.PageContext)
sendMessage()
メソッドを使用して電子メール・メッセージを送信します。
setSession()
メソッドを使用してJavaMailセッションを指定する場合は、sendMessage(PageContext)
シグネチャを使用し、指定のメール・セッション・インスタンスを保持するページ・コンテキスト・インスタンスを提供する必要があります。
setMailSession()
またはsetHost()
メソッドを使用してJavaMailセッションを指定する場合、sendMessage()
メソッドを使用してページ・コンテキストを提供する必要はありません。
ただし、ページ・コンテキスト・インスタンスを指定すると、textコンテンツ・タイプの電子メール・メッセージのキャラクタ・セットを判別する際に役立つ場合もあります。sendMessage()
メソッドのコール時にページ・コンテキストを指定しなければ、デフォルト・キャラクタ・セットはISO-8859-1
です。ページ・コンテキストを指定すると、デフォルト・キャラクタ・セットはページ・コンテキストのresponse
オブジェクトのキャラクタ・セットになります。また、コンテンツ・タイプとキャラクタ・セットは、setContentType()
メソッドを介して直接指定することもできます。
void close()
このメソッドを使用するのは、SendMailBean
インスタンスからJavaMailセッション・インスタンスのリソースを解放する必要がある場合です。このメソッドは、実際はセッションをクローズしません。
void setBcc(String s)
メッセージのブラインド・コピーを受信するID(電子メール・アドレスまたは別名)を空白またはカンマで区切ったリストを指定します。これらのIDは、メッセージのCcフィールドには表示されません。
String getBcc()
メッセージのブラインド・コピーを受信するIDのリストを取得します。
void setCc(String s)
メッセージのコピーを受信するID(電子メール・アドレスまたは別名)を空白またはカンマで区切ったリストを指定します。これらのIDは、メッセージのCcフィールドに表示されます。
String getCc()
メッセージのコピーを受信するIDのリストを取得します。
void setContent(String s)
電子メール・メッセージのコンテンツを指定します。
String getContent()
電子メール・メッセージのコンテンツを取得します。
void setContentEncoding(String s)
電子メール・メッセージのコンテンツのエンコーディングを指定します。base64エンコーディングの場合は base64
またはB
、quoted-printableエンコーディングの場合はquoted-printable
またはQ
、7ビット・エンコーディングの場合は7bit
、8ビット・エンコーディングの場合は 8bit
を指定します。これらのコンテンツ・エンコーディングは、JavaMailおよびRFC 2047標準の一部です。エントリに大/小文字区別はありません。
デフォルトのコンテンツ・エンコーディング設定はnull
で、メッセージとヘッダーのエンコーディングはコンテンツにより決定されます。エンコード対象となるほとんどの文字がASCIIの場合はquoted-printableエンコーディングが使用され、それ以外の場合はbase64
エンコーディングが使用されます。
String getContentEncoding()
メッセージのコンテンツ・エンコーディングを取得します。
void setContentType(String s)
次の例のように、MIMEタイプとメッセージのキャラクタ・セット(オプション)を指定します。
setContentType("text/html"); setContentType("text/html; charset=US-ASCII");
デフォルトのMIMEタイプ設定はtext/plain
ですが、キャラクタ・セットを指定するにはtext/plainまたは他のなんらかのtext/xxxx
MIMEタイプ設定を明示的に指定する必要があります。
デフォルトのキャラクタ・セットは、sendMessage()
メソッドをコールして電子メール・メッセージを送信する際にJSPページ・コンテキスト・インスタンスを指定するかどうかに応じて異なります。ページ・コンテキストを指定しない場合、デフォルト・キャラクタ・セットはISO-8859-1
です。ページ・コンテキストを指定した場合、デフォルト・キャラクタ・セットはページ・コンテキストのresponse
オブジェクトのキャラクタ・セットとなります。
String getContentType()
メッセージのMIMEタイプ(および、該当する場合は文字コード)を取得します。
void setHost(String s)
JavaMailセッションを指定する方法の1つは、メール・サーバーのホスト名を指定することです。この場合、SendMailBean
はセッションを自動的に取得します。そのためにはsetHost()
メソッドを使用し、gmail.oraclecorp.com
などのメール・ホスト名を指定します。
JavaMailセッションの指定の概要は、「SendMailBeanの要件」を参照してください。
String getHost()
指定のメール・サーバーのホスト名を取得します。
void setMailSession(javax.mail.Session sessobj)
JavaMailセッションを指定する方法の1つは、セッション・オブジェクトを直接指定することです。そのためには、setMailSession()
メソッドを使用してjavax.mail.Session
インスタンスを指定します。
JavaMailセッションの指定の概要は、「SendMailBeanの要件」を参照してください。
javax.mail.Session getMailSession()
前に設定したJavaMailセッションを戻します。
void setRecipient(String s)
メッセージの主要受信者のID(電子メール・アドレスまたは別名)を空白またはカンマで区切ったリストを指定します。これらのIDは、メッセージのToフィールドに表示されます。受信者を1人以上指定する必要があります。
String getRecipient()
メッセージの主要受信者のIDのリストを取得します。
void setSender(String s)
メッセージ送信者のID(電子メール・アドレスまたは別名)を指定します。このIDはメッセージのFromフィールドに表示されます。送信者を指定する必要があります。
String getSender()
メッセージ送信者のIDを取得します。
void setSession(String s)
JavaMailセッションを指定する方法の1つは、JSPページ・コンテキスト・オブジェクトにある既存のjavax.mail.Session
インスタンスの名前を指定することです。そのためには、setSession()
メソッドを使用してセッション・インスタンス名を指定します。
この場合は、sendMessage()
メソッドを使用して電子メール・メッセージを送信するときに、入力としてjavax.servlet.jsp.PageContext
インスタンスを指定する必要があります。
JavaMailセッションの指定の概要は、「SendMailBeanの要件」を参照してください。
String getSession()
セッション・インスタンス名を取得します。
void setSubject(String s)
メッセージの件名の行を指定します。
String getSubject()
メッセージの件名の行を取得します。
void setServerAttachment(String s)
電子メール・メッセージに添付するサーバー側ファイルの名前(パスを含む)をカンマまたはセミコロンで区切ったリストを指定します。OC4Jサーバー・マシン上にあるファイルを指定する必要があります。サーバー側添付は、sendmail.properties
ファイルで有効化してください。
String getServerAttachment()
メッセージに添付するサーバー側ファイルのファイル名リストを取得します。これは、ユーザー確認ページの表示などに役立ちます。
void setClientAttachment(String s)
電子メール・メッセージに添付するクライアント側ファイル(最大1つ)のパスとファイル名を指定します。ユーザーのクライアント・マシン上にあるファイルを指定する必要があります。クライアント側添付は、sendmail.properties
ファイルで有効化してください。
String getClientAttachment()
メッセージに添付するクライアント側ファイルの名前を取得します。これは、ユーザー確認ページの表示などに役立ちます。
注意: メール添付の関連情報は、「メール添付」を参照してください。 |
JSP開発者の利便性を考慮して、OC4JにはJSPページに電子メール機能を提供するためのsendMail
タグが用意されています。この項では、このタグについて説明します。この項の内容は、次のとおりです。
sendMail
タグを使用するには、ファイルojsputil.jar
、mail.jar
およびactivation.jar
がインストール済でCLASSPATHに指定されていることを確認します。これらのファイルはOC4Jで提供されます。
現行の実装では、sendMail
タグには固有のTLDファイルemail.tld
があります。このファイルをアプリケーションとともにデプロイし、タグを使用するJSPページに適切なtaglib
ディレクティブを使用する必要があります。Oracle Application Serverインストールの場合、TLDファイルは既知のタグ・ライブラリ・ディレクトリにあります。taglib
ディレクティブと既知のタグ・ライブラリ・ディレクトリについては、Oracle Application Server Containers for J2EE Support for JavaServer Pages開発者ガイド 10gを参照してください。
sendMail
タグの構文は、次のとおりです。
<mail:sendMail host = "SMTP_host_name" | session = "JavaMail_session_name" sender = "sender_address" recipient = "primary_recipient_IDs" [ cc = "cc_recipient_IDs" ] [ bcc = "bcc_recipient_IDs" ] [ subject = "subject_line" ] [ contentType = "MIME_type; [charset=charset]" ] [ contentEncoding = "B"|"base64"|"Q"|"quoted-printable"| "7bit"|"8bit" ] [ serverAttachment = "server_file_list" | clientAttachment = "client_file" ] > ... E-mail body ... </mail:sendMail>
sendMail
タグを使用する際の注意事項は、次のとおりです。
sender
およびrecipient
は必須属性で、host
またはsession
属性が必須です。
serverAttachment
を使用するには、sendmail.properties
ファイル内でサーバー側添付が有効化されていることが前提です。同様に、clientAttachment
を使用するには、sendmail.properties
ファイル内でクライアント側添付が有効化されていることが前提です。1つのアプリケーションに対して有効化できるモードは1つのみです。「添付の有効化」を参照してください。
serverAttachment
設定のファイル名のデリミタには、カンマまたはセミコロンを使用できますが、空白は使用できません。
taglib
ディレクティブで指定できます。
sendMail
タグは次の属性をサポートしています。
host
(session
を指定しない場合は必須): gmail.oraclecorp.com
などの該当するメール・ホスト名です。この属性は、メール・メッセージ用のJavaMailセッション・オブジェクトを作成する際に使用されます。また、JavaMailセッションはsession
属性を介して決定する方法もあります。
session
(host
を指定しない場合は必須): JSPページ・コンテキストから取得できる既存のJavaMailセッション・オブジェクトの名前です。また、JavaMailセッションはhost
属性を介して決定する方法もあります。
sender
(必須): メッセージ送信者のID(電子メール・アドレスまたは別名)です。このIDはメッセージのFromフィールドに表示されます。
recipient
(必須): メッセージの主要受信者のIDを空白またはカンマで区切ったリストです。これらのIDはメッセージのToフィールドに表示されます。
cc
: メッセージのコピーを受信するIDを空白またはカンマで区切ったリストです。これらのIDはメッセージのCcフィールドに表示されます。
bcc
: メッセージのブラインド・コピーを受信するIDを空白またはカンマで区切ったリストです。これらのIDはCcフィールドに表示されません。
subject
: メッセージの件名の行です。
contentType
: 次のように、メッセージのMIMEタイプとキャラクタ・セット(オプション)を指定します。
contentType="text/html" contentType="text/html; charset=US-ASCII"
デフォルトのMIMEタイプ設定はtext/plain
ですが、キャラクタ・セットを指定するにはtext/plainまたは他のなんらかのtext/xxxx
MIMEタイプを明示的に指定する必要があります。
デフォルトは、JSPページ・コンテキストのresponse
オブジェクトのキャラクタ・セットです。
contentEncoding
: base64エンコーディングの場合はB
またはbase64
、quoted-printableエンコーディングの場合は Q
またはquoted-printable
、7ビット・エンコーディングの場合は7bit
、8ビット・エンコーディングの場合は8bit
を指定します。これらのコンテンツ・エンコーディングは、JavaMailおよびRFC 2047標準の一部です。エントリに大/小文字区別はありません。
デフォルトのコンテンツ・エンコーディング設定はnull
で、メッセージとヘッダーのエンコーディングはコンテンツにより決定されます。エンコード対象となるほとんどの文字がASCIIの場合はquoted-printableエンコーディングが使用され、それ以外の場合はbase64
エンコーディングが使用されます。
serverAttachment
: 電子メール・メッセージに添付するサーバー側ファイルの名前をカンマまたはセミコロンで区切ったリストです。サーバー側添付は、sendmail.properties
ファイルで有効化する必要があります(有効化できるのはサーバー側またはクライアント側の添付のみで、両方は有効化できません)。
次に例を示します。
serverAttachment="/tmp/confirm.pdf,/home/schedule.doc"
clientAttachment
: 電子メール・メッセージに添付するクライアント側ファイル(最大1つ)の名前です。クライアント側添付は、sendmail.properties
ファイルで有効化する必要があります(有効化できるのはサーバー側またはクライアント側の添付のみで、両方は有効化できません)。
次に例を示します。
clientAttachment="c:\finance\budget02.xls"
注意: 電子メール添付の関連情報は、「メール添付」を参照してください。 |
このサンプル・アプリケーションは、添付なしでsendMail
タグを使用する方法を示しています。ページでの最初の実行サイクル中は、ユーザーが送信者(または他の値)を指定する前に、ユーザー入力用のHTMLフォームが表示されます。ページでの次回の実行サイクル中は、ユーザーが入力を送信した後にsendMail
タグが実行されます。このページでは、スローされた例外を表示するためにエラー・ページerror.jsp
(後述)も使用されます。
<%@ page language="java" errorPage="error.jsp" %> <%@ taglib uri="/WEB-INF/email.tld" prefix="mail" %> <% if (request.getParameter("sender")==null) { %> <HTML> <HEAD><TITLE>SendMail Sample</TITLE></HEAD> <FORM METHOD=post> <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 WIDTH="20%"> <TR><TD>Host:</TD><TD><INPUT TYPE="text" name="host" ></TD></TR> <TR><TD>From:</TD><TD><INPUT TYPE="text" name="sender" ></TD></TR> <TR><TD>To:</TD><TD><INPUT TYPE="text" name="recipient" ></TD></TR> <TR><TD>Cc:</TD><TD><INPUT TYPE="text" name="cc" ></TD></TR> <TR><TD>Bcc:</TD><TD><INPUT TYPE="text" name="bcc" ></TD></TR> <TR><TD>Subject:</TD><TD><INPUT TYPE="text" name="subject" VALUE="Hi"></TD></TR> </TABLE><br> <TEXTAREA name="body" ROWS=4 COLS=30>"How are you!"</TEXTAREA><br><br> <INPUT TYPE="submit" value="Send"> </FORM> <% } else{ %> <BODY BGCOLOR="#FFFFFF"> <P>Result: <HR> <mail:sendMail host='<%=request.getParameter("host")%>' sender='<%=request.getParameter("sender")%>' recipient='<%=request.getParameter("recipient")%>' cc='<%=request.getParameter("cc")%>' bcc='<%=request.getParameter("bcc")%>' subject='<%=request.getParameter("subject")%>'> <%=request.getParameter("body")%> </mail:sendMail> Sent out Successfully! <HR> </BODY> <% } %> </HTML>
これはエラー・ページerror.jsp
です。
<%@ page language="java" isErrorPage="true"%> <HTML> Error: <%= exception.getMessage() %> </HTML>
このアプリケーションを実行すると、最初に次のデフォルト画面が表示されます。
また、この画面は、ホストgmail.oraclecorp.com
を介したbrian.wright@oracle.com
からblodney.treehut@oracle.com
へのメッセージに関するユーザー入力のサンプルも示しています。
OC4Jには、JSPページとサーブレット用に便利なファイル・アップロードおよびファイル・ダウンロード機能を追加する、標準準拠のタグ・ライブラリおよびJavaBeansが用意されています。ファイルは、ファイル・システムまたはデータベースとの間でアップロードまたはダウンロードできます。
この項では、これらの機能について説明します。この項の内容は、次のとおりです。
開発者は、ユーザーがファイルをアップロードまたはダウンロードできるように、アプリケーションのプログラミングにカスタム・タグまたはJavaBeansを使用できます。いずれの場合も、アプリケーションはユーザーがクライアント・システム上のアップロード対象ファイルの位置またはダウンロード先をブラウザで指定できるようにプログラミングされます。OC4Jには、アップロードするJSPページ用に便利なタグhttpUploadForm
が用意されており、アップロード用フォームを作成できます。
宛先ファイル・システムまたはデータベース位置の指定など、アップロードの処理には、HttpUploadBean
JavaBeanまたはhttpUpload
タグを使用します。ソース・ファイル・システムまたはデータベース位置の指定など、ダウンロードの処理には、HttpDownloadBean
またはhttpDownload
タグを使用します。Beanにより、公開使用が意図されていないHttpFileAccessBean
が拡張されます。すべてのBeanはoracle.jsp.webutil.fileaccess
パッケージに含まれています。
ユーザーがファイルのアップロード元をJSPページで指定できるように、httpUploadForm
タグを使用してフォームを作成できます。このタグにより、ユーザーはアップロード対象ファイルを選択し、必要なマルチパートHTTPリクエストを作成できるようになります。また、リクエストの作成に標準HTMLフォームを使用するように選択することもできます。
HttpUploadBean
JavaBeanまたはhttpUpload
タグを使用して、マルチパート形式でエンコードされたデータ・ストリームを受信して処理し、ファイルをファイル・システム内またはデータベース内の適切な位置に書き込みます。ターゲット・ファイルまたはデータベースの行が存在する場合に、前のデータを上書きするかどうかを指定する機能もあります。
アップロード先がファイル・システム内の場合は、ベース・ディレクトリを指定するプロパティ・ファイルを提供する必要があります。プロパティ・ファイル名は fileaccess.properties
とし、アプリケーションの/WEB-INF
ディレクトリに置いて次のようなfileaccess.basedir
エントリを指定する必要があります(この例はMicrosoft Windowsシステムの場合です)。
fileaccess.basedir=C:\tmp
ベース・ディレクトリの下に、適切なサブディレクトリ(許可されたユーザーごとのサブディレクトリなど)が必要です。ベース・ディレクトリの下の宛先サブディレクトリは、アップロードBeanまたはタグの属性で指定します。すべてのディレクトリとサブディレクトリが存在し、書込み可能である必要があります。OC4Jの機能を介して作成したり書込み可能にすることはできません。
アップロード先がデータベース内の場合は、必要に応じてデフォルト表fileaccess
(提供されたfileaccess.sql
スクリプトを介して作成)を使用するか、必要な列タイプを含む他の既存の表を使用できます。いずれの場合も、データベースへの接続をoracle.jsp.dbutil.ConnBean
または標準java.sql.Connection
のインスタンスとして提供する必要があります。ConnBean
インスタンスは、明示的に、JSPページ内で、またはhttpUpload
タグをdbOpen
タグ内でネストした結果として暗黙的に提供できます(ConnBean
JavaBeanとdbOpen
タグについては、「データ・アクセスJavaBeansおよびタグ」を参照してください)。
また、アップロードBeanまたはタグの属性を介して宛先を指定する必要もあります。宛先は、単にデータベース表のprefix列に入力されるJava文字列値です。接頭辞はファイル・システムのパスと等価です。
ファイル・データは、データベースにBLOBまたはCLOBとして書き込まれます(どちらを使用するかはアップロードBeanまたはタグの属性を介して指定します)。
デフォルトのfileaccess
表を使用しない場合は、アップロードBeanまたはタグの属性を使用して、データベース表名と、ファイル・データ、ファイル接頭辞、ファイル名が書き込まれる各列の名前を指定してください。他に使用する表は、次のようにfileaccess
のパターンに準拠する必要があります。
注意:
|
データベースにアップロードする場合、データベース表には指定のファイルについて許可されている特定のユーザーを示す列がありません。したがって、予防策がなければ、各ユーザーはファイル接頭辞を知らなくても他のユーザーがアップロードしたファイルを参照できます。これを防ぐために、各接頭辞に適切なユーザー名を付加できます。
HttpDownloadBean
JavaBeanまたはhttpDownload
タグを次のように使用します。
次の点に注意してください。
ユーザーは、使用可能なファイルのリストに表示されたファイルを、リストから1つずつダウンロードできます。
再帰的ダウンロードを実行するかどうかを指定する機能もあります。この場合、サブディレクトリ内のファイルやデータベース接頭辞情報が追加されているファイルも、ダウンロード可能です。データベース・ダウンロードする場合、接頭辞はファイル・システムのパスと等価で、ファイルを階層形式でグループ化する際に使用できます。データベースからの再帰的なダウンロードの例として、接頭辞として/user
を指定したとします。再帰的ダウンロードでは、/user
で始まる接頭辞を持ったファイルの一致(/user/bill
や/user/mary
、/user1
、/user2
、/user1/tom
、/user2/susan
など)が検索されます。
ファイル・システムからファイルをダウンロードする場合は、「ファイル・アップロードの概要」で説明したメカニズムを使用します。つまり、fileaccess.properties
ファイルを使用してベース・ディレクトリを指定し、ダウンロードBeanまたはタグの属性を使用してファイル・パスの残りの部分を指定します。
データベースからファイルをダウンロードする場合は、データベースにファイルをアップロードする場合と同様に、oracle.jsp.dbutil.ConnBean
またはjava.sql.Connection
のインスタンスを提供する必要があります。また、デフォルトのfileaccess
表(提供されたfileaccess.sql
スクリプトを使用して作成可能)を使用しない場合は、データベース表と列に関して必要な情報をすべて指定してください。この情報は、ダウンロードBeanまたはタグの属性を介して指定します。
ファイルの実際のダウンロードは、OC4Jで提供されるDownloadServlet
により実行されます。ダウンロード・タグを使用する場合は、このサーブレットのパスをタグ属性で指定します。ファイル・システム・ソースの場合は、サーブレットへのハイパーリンクが自動的に作成されるため、ユーザーは各ファイルのリンクを選択してファイルをダウンロードできます。データベース・ソースの場合は、ファイル・コンテンツを形成する選択したCLOBまたはBLOBデータがサーブレットによりフェッチされます(「ダウンロード・サーブレット」を参照)。
ダウンロードの場合は、ソース(サーバー側)ファイル・システムまたはデータベースの内容に関してユーザーの参照機能を制限することを考慮してください。予防策がなければ、次のようなシナリオが考えられます。
*
(ユーザー入力を介して指定)は、ベース・ディレクトリの下の全ディレクトリがダウンロード可能であり、すべてのファイル名がユーザーに選択候補として表示されることを意味します。
source
文字列で始まる接頭辞を持つ全ファイル(ユーザー入力を介して指定)がダウンロード可能であり、該当する全ファイル名が表示されます。ソース*
はすべての接頭辞と一致します。
これが問題になる場合は、次のような予防策を考慮できます。
source
値*
を受け入れない
source
値に部分的なディレクトリ・パスまたはユーザー名などの接頭辞文字列を自動的に付加する
この項では、OC4Jで提供されるファイル・アップロードJavaBean(HttpUploadBean
)およびファイル・ダウンロードJavaBean(HttpDownloadBean
)の属性とメソッドについて説明します。
また、実際のファイル・ダウンロードを実行するためにOC4Jで提供されるDownloadServlet
と、ファイルのアップロードとダウンロードに関連する例外にファイル・アクセスJavaBeansで使用されるFileAccessException
クラスについても説明します。
JavaBean仕様に準拠するために、ファイル・アップロードJavaBeanとファイル・ダウンロードJavaBeanには、引数なしのコンストラクタがあります。
注意:
ファイル・アップロードJavaBeanとファイル・ダウンロードJavaBeanを使用するには、ファイル |
oracle.jsp.webutil.fileaccess.HttpUploadBean
JavaBeanには、アップロードに使用する情報を指定するためのsetterメソッドが多数用意されています。また、対応するほとんどのgetterメソッドも組み込まれています。必須の属性と適切な属性をすべて設定した後、upload()
メソッドを使用してアップロードを実行します。アップロードされたファイルの名前を表示するためのメソッドもあるため、通常はブラウザに情報メッセージを表示できます。
HttpUploadBean
は、HttpDownloadBean
の場合と同様に、それ自体は公開使用を意図していないHttpFileAccessBean
を拡張します。
関連情報は、「ファイル・アップロードの概要」を参照してください。
HttpUploadBean
の必須属性は、次のとおりです。
destination
destinationType
、connection
fileaccess
以外のデータベース表にアップロードする場合に必須: table
、prefixColumn
、fileNameColumn
、dataColumn
fileType
また、ファイル・システムにアップロードする場合は、setBaseDir()
メソッドをコールしてサーブレット・コンテキストとHTTPリクエスト・オブジェクトを指定する必要があります。これにより、ベース・ディレクトリを指定するfileaccess.properties
ファイルをBeanで検索できます。
ここでは、HttpUploadBean
のpublicメソッドについて説明します。
void upload(javax.servlet.http.HttpServletRequest req)
throws FileAccessException
必須Bean属性と適切なBean属性をすべて設定した後、このメソッドをアップロードに使用します。req
パラメータは、マルチパート形式でエンコードされたファイルを含んだHTTPリクエスト・インスタンスです。JSPページの場合は、暗黙的なrequest
オブジェクトを使用します。
void setBaseDir(javax.servlet.ServletContext sc,
javax.servlet.http.HttpServletRequest req)
throws FileAccessException
ファイル・システムにアップロードする場合は、このメソッドを使用してベース・ディレクトリとして使用するディレクトリを指定します。このメソッドは、サーブレット・コンテキストの入力パラメータを介してアプリケーションの/WEB-INF
ディレクトリにあるfileaccess.properties
ファイルを検索し、この情報を取得します。baseDir
設定をdestination
設定とともに使用して、アップロード・ディレクトリへの絶対パスを指定します。
req
パラメータは、ベース・ディレクトリ情報のリクエストに使用するサーブレット・リクエスト・インスタンスです。JSPページの場合は、暗黙的なrequest
オブジェクトを使用します。
このメソッドは、データベース・アップロードには無関係です。
void setDestination(String destination)
このメソッドは常に必須です。
ファイル・システムにアップロードする場合は、destination
をベース・ディレクトリとともに使用して、アップロード・ディレクトリへの絶対パスを指定します。
データベースにアップロードする場合、destination
はファイル接頭辞(base directoryなし)として使用されます。接頭辞はファイル・システムのパスと等価であり、ファイルを階層形式でグループ化する際に使用できます。destination文字列には「.
」や「/
」などのセパレータを含めることができます。
void setDestinationType(String destinationType)
throws FileAccessException
void setDestinationType(int destinationType)
throws FileAccessException
オーバーロードされたsetDestinationType()
メソッドを使用して、アップロード先がファイル・システムであるかデータベースであるかを指定します。
データベースにアップロードするには、destinationType
を文字列database
、定義済のString
定数FileAccessUtil.DATABASE
、int
値1または定義済のint
定数FileAccessUtil.LOCATION_TYPE_DATABASE
のいずれかに設定します。
ファイル・システムへのアップロードはデフォルトですが、これを明示的に指定する必要がある場合は、destinationType
を文字列filesystem
、定義済のString
定数FileAccessUtil.FILESYSTEM
、int
値0(ゼロ)または定義済のint
定数FileAccessUtil.LOCATION_TYPE_FILESYSTEM
のいずれかに設定します。
FileAccessUtil
は、oracle.jsp.webutil.fileaccess
パッケージに含まれています。
String getDestinationType()
宛先情報を取得します。文字列バージョン専用のgetterメソッドがあることに注意してください。
void setOverwrite(String overwrite)
throws FileAccessException
void setOverwrite(boolean overwrite)
オーバーロードされたsetOverwrite()
メソッドを使用して、既存のファイルを上書きするか、同じファイル名または接頭辞で行を更新します。これは、ファイル・システムへのアップロードとデータベースへのアップロードの両方に関係します。
上書きはデフォルトで有効化されますが、overwrite
を文字列true
またはブール値true
に設定すると明示的に有効化できます。上書きを無効化するには、文字列false
またはブール値false
に設定します。文字列設定に大/小文字区別はありません。ここに示した以外の設定は許容されません。
void setFileType(String fileType)
throws FileAccessException
void setFileType(int fileType) throws FileAccessException
データベースにアップロードする場合は、オーバーロードされたsetFileType()
メソッドを使用して、データをバイナリ・データ用のBLOBに格納するか(デフォルト)、キャラクタ・データ用のCLOBに格納するかを指定します。CLOBの場合は、fileType
を文字列character
、定義済のString
定数FileAccessUtil.CHARACTER_FILE
またはint
値1のいずれかに設定します。BLOBを明示的に指定するには、fileType
を文字列binary
、定義済のString
定数FileAccessUtil.BINARY_FILE
またはint値0(ゼロ)のいずれかに設定します。文字列設定に大/小文字区別はありません。ここに示した以外の設定は許容されません。
FileAccessUtil
は、oracle.jsp.webutil.fileaccess
パッケージに含まれています。
String getFileType()
ファイル・タイプ情報を取得します。文字列バージョン専用のgetterメソッドがあることに注意してください。
void setTable(String tableName)
デフォルトの fileaccess
以外のデータベース表にアップロードする場合は、このメソッドを使用して表名を指定します。
String getTable()
表名を取得します。
void setPrefixColumn(String prefixColumnName)
デフォルトのfileaccess
以外のデータベース表にアップロードする場合は、このメソッドを使用してファイル接頭辞を含む列の名前を指定します(fileaccess
では、この列名はfileprefix
です)。destination
値は、この列に書き込まれます。
String getPrefixColumn()
ファイル接頭辞を含む列の名前を取得します。
void setFileNameColumn(String fileNameColumnName)
デフォルトのfileaccess
以外のデータベース表にアップロードする場合は、このメソッドを使用してファイル名を含む列の名前を指定します(fileaccess
では、この列名はfilename
です)。ファイル名には、いずれかのファイル名拡張子が含まれます。
String getFileNameColumn()
ファイル名を含む列の名前を取得します。
void setDataColumn(String dataColumnName)
デフォルトのfileaccess
以外のデータベース表にアップロードする場合は、このメソッドを使用して、ファイル・コンテンツを含むBLOB列またはCLOB列の名前を指定します( fileaccess
では、この列名はdata
です)。
String getDataColumn()
ファイル・コンテンツを含む列の名前を取得します。
void setConnection(ConnBean conn)
void setConnection(java.sql.Connection conn)
データベース表(デフォルト表または他の表)にアップロードする場合は、このオーバーロードされたメソッドを使用してデータベース接続を指定します。oracle.jsp.dbutil.ConnBean
または標準のjava.sql.Connection
型のインスタンスを指定できます。ConnBean
JavaBeanについては、「データベース接続用のConnBean」を参照してください。
Connection
インスタンスを使用する場合は、明示的にオープンおよびクローズする必要があります。ConnBean
インスタンスの場合、オープンとクローズは自動的に処理されます。
java.util.Enumeration getFileNames()
このメソッドは、アップロードされたファイルの名前を含むEnumeration
インスタンスを戻します(この機能は、httpUpload
タグでは使用できません)。
この例では、プレーンHTMLフォームを使用してファイル・システムにアップロードするファイルを指定してから、アップロードにHttpUploadBean
を利用するJSPページを使用します。
このHTMLフォームでは、アクションにbeanUploadExample.jsp
が指定され、マルチパート・アップロード・ストリームが生成されます。
<html><body> <form action="beanUploadExample.jsp" ENCTYPE="multipart/form-data" method=POST> <br> File to upload: <INPUT TYPE="FILE" NAME="File" SIZE="50" MAXLENGTH="120" > <br><INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Send"> </form> </body></html>
次の例はbeanUploadExample.jsp
ページです。
<%@ page language="java" import="java.util.*, oracle.jsp.webutil.fileaccess.*" %> <html><body> <% String userdir = "fileaccess"; %> // user's part of the upload directory <jsp:useBean id="upbean" class="oracle.jsp.webutil.fileaccess.HttpUploadBean" > <jsp:setProperty name="upbean" property="destination" value="<%= userdir %>" /> </jsp:useBean> <% upbean.setBaseDir(application, request); upbean.upload(request); Enumeration fileNames = upbean.getFileNames(); while (fileNames.hasMoreElements()) { %> <br><%= (String)fileNames.nextElement() %> <% } %> <br>Done! </body></html>
oracle.jsp.webutil.fileaccess.HttpDownloadBean
JavaBeanには、ダウンロードに使用する情報を指定するためのsetterメソッドが多数用意されています。また、対応するほとんどのgetterメソッドも組み込まれています。必須の属性と適切な属性をすべて設定した後、listFiles()
メソッドを使用して、ダウンロード可能なファイルをリストします。実際のダウンロードは、OC4Jで提供されるDownloadServlet
を介して1つずつ行われます。「ダウンロード・サーブレット」を参照してください。
HttpDownloadBean
は、HttpUploadBean
の場合と同様に、それ自体は公開使用を意図していないHttpFileAccessBean
を拡張します。
関連情報は、「ファイル・アップロードの概要」を参照してください。
HttpDownloadBean
の必須属性は、次のとおりです。
source
sourceType
、connection
fileaccess
以外のデータベース表からダウンロードする場合に必須: table
、prefixColumn
、fileNameColumn
、dataColumn
fileType
また、ファイル・システムからダウンロードする場合は、setBaseDir()
メソッドをコールしてサーブレット・コンテキストとHTTPリクエスト・オブジェクトを指定する必要があります。これにより、ベース・ディレクトリを指定するfileaccess.properties
ファイルをBeanで検索できます。
ここでは、HttpDownloadBean
のpublicメソッドについて説明します。
void listFiles(javax.servlet.http.HttpServletRequest req)
throws FileAccessException
必須Bean属性と適切なBean属性をすべて設定した後、このメソッドを使用して、ダウンロード可能なファイルをリストします。これらは、ソース・ディレクトリにあるファイルか、ソース・データベース接頭辞が一致するファイルです。req
パラメータは、HTTPレスポンス・インスタンスです。JSPページの場合は、暗黙的なrequest
オブジェクトを使用します。
ファイル・リストから使用する場合は、DownloadServlet
へのHREF
リンクを作成し、各ファイルおよびファイル接頭辞を渡すことができます。これにより、ユーザーはダウンロードする各ファイルのリンクを選択できるようになります。
注意:
|
java.util.Enumeration getFileNames()
このメソッドは、ダウンロード可能なファイルの名前を含むEnumeration
インスタンスを戻します。このメソッドの前にlistFiles()
メソッドがコールされている必要があります。 listFiles()
はファイル名をメモリーとJSPページまたはサーブレットに書き込み、getFileNames()
はそれをメモリーから読み取ります。
void setBaseDir(javax.servlet.ServletContext sc,
javax.servlet.http.HttpServletRequest req)
throws FileAccessException
ファイル・システムからダウンロードする場合は、このメソッドを使用してベース・ディレクトリとして使用するディレクトリを指定します。このメソッドは、サーブレット・コンテキストの入力パラメータを介してアプリケーションの/WEB-INF
ディレクトリにあるfileaccess.properties
ファイルを検索し、この情報を取得します。baseDir
設定をsource
設定とともに使用して、ファイルのダウンロード元ディレクトリへの絶対パスを指定します。
sc
パラメータでは、アプリケーションのサーブレット・コンテキスト・インスタンスを指定します。JSPページの場合は、暗黙的なapplication
オブジェクトを使用します。
req
パラメータは、ベース・ディレクトリ情報のリクエストに使用するHTTPリクエスト・インスタンスです。JSPページの場合は、暗黙的なrequest
オブジェクトを使用します。
ベース・ディレクトリは、データベースからのダウンロードには関係しません。
void setSource(String source)
これは常に必須です。
ファイル・システムからダウンロードする場合は、source
をベース・ディレクトリとともに使用して、ファイルのダウンロード元ディレクトリへの絶対パスを指定します。source
を*
に設定すると、ベース・ディレクトリの下の全ディレクトリがダウンロードに使用可能になります。
データベースからダウンロードする場合、source
はファイル接頭辞として使用されます(ベース・ディレクトリは関係しません)。接頭辞はファイル・システムのパスと等価であり、ファイルを階層形式でグループ化する際に使用できます。recurse
が有効化されている場合は、source
値に%
が追加され、問合せのWHERE
句に適切なLIKE
句が含まれます。したがって、source
値と部分的に一致する接頭辞を持つファイルは、すべてダウンロード可能になります。データベース表のすべての行を一致させる場合は、source
を*
に設定します。
void setSourceType(String sourceType)
throws FileAccessException
void setSourceType(int sourceType)
throws FileAccessException
オーバーロードされたsetSourceType()
メソッドを使用して、ダウンロード元がファイル・システムであるかデータベースであるかを指定します。
データベースからダウンロードするには、sourceType
を文字列database
、定義済のString
定数FileAccessUtil.DATABASE
、int
値1または定義済のint
定数FileAccessUtil.LOCATION_TYPE_DATABASE
のいずれかに設定します。
ファイル・システムからのダウンロードはデフォルトですが、これを明示的に指定する必要がある場合は、sourceType
を文字列filesystem
、定義済のString
定数FileAccessUtil.FILESYSTEM
、int
値0(ゼロ)または定義済のint
定数FileAccessUtil.LOCATION_TYPE_FILESYSTEM
のいずれかに設定します。
FileAccessUtil
は、oracle.jsp.webutil.fileaccess
パッケージに含まれています。
String getSourceType()
ソース・タイプ情報を取得します。文字列バージョン専用のgetterメソッドがあることに注意してください。
void setRecurse(String recurse) throws FileAccessException
void setRecurse(boolean recurse)
オーバーロードされたsetRecurse()
メソッドを使用して、再帰的なダウンロードを有効化または無効化します。再帰的なダウンロードでは、ファイル・システムのサブディレクトリにあるファイル、またはデータベース接頭辞情報が追加されているファイルも、ダウンロード可能になります。データベースからの再帰的なダウンロードの例として、source
が/user
に設定されているとします。再帰的なダウンロードでは、/user/bill
や/user/mary
、/user1
、/user2
、/user1/tom
および/user2/susan
などの接頭辞を持つファイルとの一致も検索されます。
再帰的なダウンロードはデフォルトで有効化されますが、recurse
を文字列true
またはブール値true
に設定すると明示的に有効化できます。再帰的なダウンロードを無効化するには、文字列false
またはブール値false
に設定します。文字列設定に大/小文字区別はありません。ここに示した以外の設定は許容されません。
注意:
実際には、再帰的なダウンロードではファイル・システムのダウンロードに制限値があります。ファイルをクライアントにダウンロードするときにサーバーのサブディレクトリ構造をパラレルにするため、既存のサブディレクトリを使用する必要があります。 |
void setFileType(String fileType)
throws FileAccessException
void setFileType(int fileType) throws FileAccessException
データベースからダウンロードする場合は、オーバーロードされたsetFileType()
メソッドを使用して、データをバイナリ・データ用のBLOBに格納するか(デフォルト)、キャラクタ・データ用のCLOBに格納するかを指定します。CLOBの場合は、fileType
を文字列character
、定義済のString
定数FileAccessUtil.CHARACTER_FILE
またはint
値1のいずれかに設定します。BLOBを明示的に指定するには、fileType
を文字列binary
、定義済のString
定数FileAccessUtil.BINARY_FILE
またはint
値0(ゼロ)のいずれかに設定します。文字列設定に大/小文字区別はありません。ここに示した以外の設定は許容されません。
FileAccessUtil
は、oracle.jsp.webutil.fileaccess
パッケージに含まれています。
String getFileType()
ファイル・タイプ情報を取得します。文字列バージョン専用のgetterメソッドがあることに注意してください。
void setTable(String tableName)
デフォルトのfileaccess
以外のデータベース表からダウンロードする場合は、このメソッドを使用して表名を指定します。
String getTable()
表名を取得します。
void setPrefixColumn(String prefixColumnName)
デフォルトのfileaccess
以外のデータベース表からダウンロードする場合は、このメソッドを使用して、ファイル接頭辞を含む列の名前を指定します( fileaccess
では、この列名はfileprefix
です)。
String getPrefixColumn()
ファイル接頭辞を含む列の名前を取得します。
void setFileNameColumn(String fileNameColumnName)
デフォルトのfileaccess
以外のデータベース表からダウンロードする場合は、このメソッドを使用してファイル名を含む列の名前を指定します(fileaccess
では、この列名はfilename
です)。ファイル名には、いずれかのファイル名拡張子が含まれます。
String getFileNameColumn()
ファイル名を含む列の名前を取得します。
void setDataColumn(String dataColumnName)
デフォルトのfileaccess
以外のデータベース表からダウンロードする場合は、このメソッドを使用して、ファイル・コンテンツを保持するBLOB列またはCLOB列の名前を指定します( fileaccess
では、この列名はdata
です)。
String getDataColumn()
ファイル・コンテンツを含む列の名前を取得します。
void setConnection(ConnBean conn)
void setConnection(java.sql.Connection conn)
データベース表(デフォルト表または他の表)からダウンロードする場合は、このメソッドを使用してデータベース接続を指定します。oracle.jsp.dbutil.ConnBean
または標準のjava.sql.Connection
型のインスタンスを指定できます。ConnBean
JavaBeanについては、「データベース接続用のConnBean」を参照してください。
Connection
インスタンスを使用する場合は、明示的にオープンおよびクローズする必要があります。ConnBean
インスタンスの場合、オープンとクローズは自動的に処理されます。
この例は、ファイル・システムからのダウンロードにHttpDownloadBean
を使用するJSPページです。ページでは、ダウンロード・サーブレットのURLを構成する必要があることに注意してください。
<%@ page language="java" import="java.util.*, oracle.jsp.webutil.fileaccess.*" %> <html><body> <% String servletPath = "/servlet/download/"; // path to the download servlet String userDir = "fileaccess/"; // user part of download directory %> <jsp:useBean id="dbean" class="oracle.jsp.webutil.access.HttpDownloadBean" > <jsp:setProperty name="dbean" property="source" value='<%=userDir %>' /> </jsp:useBean> <% dbean.setBaseDir(application, request); dbean.listFiles(request); %> The following files were found: <% Enumeration fileNames = dbean.getFileNames(); while (fileNames.hasMoreElements()) { String name = (String)fileNames.nextElement(); %> <br><a href="<%= servletPath + name %>" > <%= name %></a> <% } %> <br>Done! </body></html>
HttpDownloadBean
またはhttpDownload
タグを介してダウンロード機能を使用するには、Webサーバーで使用可能なoracle.jsp.webutil.fileaccess.DownloadServlet
クラスが必要です。
Webサーバーでのマッピングを、servletPath
属性(httpDownload
タグを使用する場合)を介して、またはアプリケーション・コード内で(HttpDownloadBean
を使用する場合)、サーブレットのパス設定に反映させる必要があります。Webサーバーでの構成方法の例は、OC4Jデモ用の/WEB-INF/web.xml
ファイルを参照してください。
たとえば、OC4Jデモでは、コンテキスト・パス/j2ee/servlet
(OC4JのデフォルトWebアプリケーションのコンテキスト・ルート、Oracle HTTP ServerとApache Jservプロトコルを使用)でサーブレット名download
にマップされているDownloadServlet
を検出する必要があります。つまり、web.xml
を編集しないかぎり、次の相対パスでアクセスできる必要があります。
/j2ee/servlet/download
oracle.jsp.webutil.fileaccess.FileAccessException
クラスは、ファイル・アクセス例外用にOC4Jで提供されるクラスです。このクラスは、標準のjava.sql.SQLException
およびjava.io.IOException
クラスの機能をラップします。また、SQL例外とI/O例外のみでなく、いずれかのファイル・アクセスBeanからの例外を処理します。
ファイル・アップロードの場合、OC4JにはhttpUpload
タグが用意されています。このタグはHttpUploadBean
を使用します。利便性を考慮して、ユーザーがアップロードするファイルの指定に使用するフォームをプログラミングする際にhttpUploadForm
タグを使用するか、または手動でフォームをコーディングできます。
ファイル・ダウンロードの場合、OC4JにはカスタムhttpDownload
タグが用意されています。このタグはHttpDownloadBean
を使用します。この項では、これらのタグと属性について説明します。
ファイル・アップロード・タグとファイル・ダウンロード・タグを使用するには、ファイルojsputil.jar
がインストール済でCLASSPATHに指定されていることを確認します。このファイルはOC4Jで提供されます。
タグ・ライブラリ・ディスクリプタ・ファイルfileaccess.tld
をアプリケーションとともにデプロイし、このライブラリを使用するJSPページには適切なtaglib
ディレクティブを使用する必要があります。Oracle Application Serverインストールでは、TLDファイルは既知のタグ・ライブラリ・ディレクトリにあります。taglib
ディレクティブと既知のタグ・ライブラリ・ディレクトリについては、Oracle Application Server Containers for J2EE Support for JavaServer Pages開発者ガイド 10gを参照してください。
注意:
|
利便性を考慮して、httpUploadForm
タグを使用し、マルチパート・エンコード形式のデータを使用してアプリケーションのフォームを作成できます。これにより、ユーザーはアップロードするファイルを指定できるようになります。
<fileaccess:httpUploadForm formsAction = "action" [ maxFiles = "max_number" ] [ fileNameSize = "file_input_box_num_chars" ] [ maxFileNameSize = "max_file_name_num_chars" ] [ includeNumbers = "true" | "false" ] [ submitButtonText = "button_label_text" ] />
formsAction
(必須): フォームの発行後に実行するアクションを指定します。たとえばformsAction
に、HttpUploadBean
タグまたはhttpUpload
タグを使用するJSPページの名前を指定できます。
maxFiles
: フォームに表示する入力行数を指定する場合に使用します。デフォルトは1です。
fileNameSize
: 1つ以上のファイル名入力ボックスの幅(文字数)を指定する場合に使用します。デフォルトは20文字です。
maxFileNameSize
: ファイル名の最大許容文字数を指定する場合に使用します。デフォルトは80文字です。
includeNumbers
: ファイル名入力ボックスを番号付きにする場合はtrue
に設定します。デフォルト設定はfalse
です。
submitButtonText
: フォームの発行ボタンに表示するテキストを指定する場合に使用します。デフォルトはSend
です。
このタグは、HttpUploadBean
JavaBeanの属性をパラレル化して機能をラップします。関連情報は、「ファイル・アップロードの概要」および「HttpUploadBean」を参照してください。
<fileaccess:httpUpload destination = "dir_path_or_prefix" [ destinationType = "filesystem" | "database" ] [ connId = "id" ] [ scope = "request" | "page" | "session" | "applicaton" ] [ overwrite = "true" | "false" ] [ fileType = "character" | "binary" ] [ table = "table_name" ] [ prefixColumn = "column_name" ] [ fileNameColumn = "column_name" ] [ dataColumn = "column_name" ] />
destination
(必須): ファイル・システムにアップロードする場合、この属性は/WEB-INF/fileaccess.properties
ファイルで指定されるベース・ディレクトリの下の、ファイルのアップロード先ディレクトリのパスを示します。データベースにアップロードする場合、destination
はファイル接頭辞(概念上はファイル・システムのパスと等価)を示します。
destinationType
: データベースへのアップロードの場合はdatabase
に設定します。デフォルトはファイル・システムへのアップロードですが、それをfilesystem
に明示的に設定することもできます。これらの値に大/小文字区別はありません。
connId
: データベースにアップロードする場合は、この属性を使用して、使用するデータベース接続のConnBean
接続IDを指定します。または、httpUpload
タグをdbOpen
タグ内で使用して、暗黙的にdbOpen
接続を使用する方法もあります。OC4Jで提供されるConnBean
JavaBeanとdbOpen
タグの詳細は、「データ・アクセスJavaBeansおよびタグ」を参照してください。
scope
: データベースにアップロードする場合は、この属性を使用して、接続用ConnBean
インスタンスのスコープを指定します。このスコープ設定はConnBean
インスタンス作成時のスコープ設定(dbOpen
タグ内など)と一致する必要があります。httpUpload
タグをdbOpen
タグ内でネストする場合、connId
または scope
を指定する必要はありません。それぞれの情報はdbOpen
タグから使用されます。それ以外の場合、デフォルトのスコープ設定はpage
です。
overwrite
: アップロード対象ファイルと同じパスおよび名前を持つ既存のファイルを上書きしない場合、またはデータベース・アップロード用と同じファイル名および接頭辞で行を更新しない場合は、この属性をfalse
に設定します。この場合、ファイルが存在しているとエラーが生成されます。デフォルトでは、overwrite
はtrue
に設定され、httpUpload
によりファイルが上書きされます。
fileType
: データベースにアップロードする場合は、この属性をcharacter
に設定します。これにより、CLOBにキャラクタ・データが書き込まれます。デフォルト設定は、バイナリ・データをBLOBに書き込むことを表すbinary
です。
table
: デフォルトのfileaccess
以外のデータベース表にアップロードする場合は、この属性を使用して表名を指定します。
prefixColumn
: デフォルトのfileaccess
以外のデータベース表にアップロードする場合は、この属性を使用して、ファイル接頭辞を含む列の名前を指定します。この列にdestination
値が書き込まれます。
fileNameColumn
: デフォルトのfileaccess
以外のデータベース表にアップロードする場合は、この属性を使用してファイル名を含む列の名前を指定します。
dataColumn
: デフォルトのfileaccess
以外のデータベース表にアップロードする場合は、この属性を使用してファイル・コンテンツを含む列の名前を指定します。
この例には、httpUploadForm
タグを使用して、アップロード対象ファイルの指定に使用するHTMLフォームを作成するページがあります。 httpUploadForm
タグでは、フォームのアクションとしてhttpUploadExample.jsp
を指定しています。httpUploadExample.jsp
ページでは、httpUpload
タグを使用して、データベース内のデフォルトのfileaccess
表にアップロードしています。
これは、HTMLフォーム用のページです。
<%@ page language="java" import="java.io.*" %> <%@ taglib uri="/WEB-INF/fileaccess.tld" prefix="upload" %> <html> <body> <fileaccess:httpUploadForm formsAction="httpUploadExample.jsp" maxFiles='<%= request.getParameter("MaxFiles") %>' includeNumbers="true" fileNameSize="50" maxFileNameSize="120" > <br> File: </fileaccess:httpUploadForm> </body> </html>
その後にhttpUploadExample.jsp
ページがあります。httpUpload
タグは、dbOpen
タグ内にある結果としてデータベース接続を取得することに注意してください。また、必要に応じて接続を取得するために setconn.jsp
が使用されています。「setconn.jsp」を参照してください。
<%@ page language="java" %> <%@ taglib uri="/WEB-INF/fileaccess.tld" prefix="upload" %> <%@ taglib uri="/WEB-INF/sqltaglib.tld" prefix="sql" %> <% String connStr=request.getParameter("connStr"); // get the connection string if (connStr==null) { connStr=(String)session.getValue("connStr"); } else { session.putValue("connStr",connStr); } if (connStr==null) { %> <jsp:forward page="setconn.jsp" /> <% } %> <html><body> <sql:dbOpen URL="<%= connStr %>" user="scott" password="tiger" > <fileaccess:httpUpload destinationType = "database" destination="tagexample" /> </sql:dbOpen> Done! </body></html>
このタグは、HttpDownloadBean
JavaBeanの属性をパラレル化して機能をラップします。関連情報は、「ファイル・ダウンロードの概要」および「HttpDownloadBean」を参照してください。
<fileaccess:httpDownload servletPath = "path" source = "dir_path_or_prefix" [ sourceType = "filesystem" | "database" ] [ connId = "id" ] [ scope = "request" | "page" | "session" | "applicaton" ] [ recurse = "true" | "false" ] [ fileType = "character" | "binary" ] [ table = "table_name" ] [ prefixColumn = "column_name" ] [ fileNameColumn = "column_name" ] [ dataColumn = "column_name" ] />
注意:
|
servletPath
(必須): 各ファイルの実際のダウンロードを実行するOracle DownloadServlet
へのパスです。たとえば、DownloadServlet
がアプリケーションapp
にインストールされ、名前download
にマップされている場合は、/app/download/
に先行スラッシュと後続スラッシュを付けてservletPath
設定として使用します。 httpDownload
タグ・ハンドラでは、このパスがDownloadServlet
へのURLを構成する際に使用されます。
このサーブレットの詳細は、「ダウンロード・サーブレット」を参照してください。
source
(必須): ファイル・システムからダウンロードする場合、この属性はファイル /WEB-INF/fileaccess.properties
で指定されるベース・ディレクトリの下の、ファイルの取得元ディレクトリのパスを示します。値*
を指定すると、ベース・ディレクトリの下の全ディレクトリが使用可能になります。
データベースからダウンロードする場合、この属性はファイル・システムのパスと概念上は等価のファイル接頭辞として使用されます。recurse
が有効化されている場合は、source
値に%
が追加され、問合せのWHERE
句に適切なLIKE
句が含まれます。したがって、source値と部分的に一致する接頭辞を持つファイルは、すべてダウンロード可能になります。データベース表のすべての行を一致させる場合は、source
を*
に設定します。
sourceType
: データベースからダウンロードする場合は、database
に設定します。デフォルトではファイル・システムからダウンロードされますが、これをfilesystem
に明示的に設定することもできます。
connId
: データベースからダウンロードする場合は、この属性を使用して、使用するデータベース接続のConnBean
接続IDを指定します。または、httpDownload
タグをdbOpen
タグ内で使用して、暗黙的にdbOpen
接続を使用する方法もあります。OC4Jで提供されるConnBean
JavaBeanとdbOpen
タグの詳細は、「データ・アクセスJavaBeansおよびタグ」を参照してください。
scope
: データベースからダウンロードする場合は、この属性を使用して、接続用ConnBean
インスタンスのスコープを指定します。このスコープ設定はConnBean
インスタンス作成時のスコープ設定(dbOpen
タグ内など)と一致する必要があります。httpDownload
タグをdbOpen
タグ内でネストする場合、connId
またはscope
を指定する必要はありません。それぞれの情報はdbOpen
タグから使用されます。それ以外の場合、デフォルトのスコープ設定はpage
です。
recurse
: 再帰的なダウンロードを使用しない場合は、false
に設定します。再帰的なダウンロードでは、ファイル・システムのサブディレクトリにあるファイル、またはデータベース接頭辞情報が追加されているファイルも、ダウンロード可能になります。データベースからの再帰的なダウンロードの例として、source
を/user
に設定しているとします。再帰的なダウンロードでは、/user/bill
や/user/mary
、/user1
、/user2
、/user1/tom
、/user2/susan
などの接頭辞を持つファイルとの一致も検索されます。デフォルトは再帰的なダウンロードですが、それをtrue
設定で明示的に有効化する方法もあります。
fileType
: データベースからダウンロードする場合は、この属性をcharacter
に設定します。これにより、CLOBからキャラクタ・データが取得されます。デフォルト設定は、バイナリ・データをBLOBから取得することを表すbinary
です。
table
: デフォルトのfileaccess
以外のデータベース表からダウンロードする場合は、この属性を使用して表名を指定します。
prefixColumn
: デフォルトのfileaccess
以外のデータベース表からダウンロードする場合は、この属性を使用して、ファイル接頭辞を含む列の名前を指定します。この列にsource
値が格納されます。
fileNameColumn
: デフォルトのfileaccess
以外のデータベース表からダウンロードする場合は、この属性を使用してファイル名を含む列の名前を指定します。ファイル名には、いずれかのファイル名拡張子が含まれます。
dataColumn
: デフォルトのfileaccess
以外のデータベース表からダウンロードする場合は、この属性を使用してファイル・コンテンツを格納する列の名前を指定します。
次の例は、httpDownload
タグを使用してデータベースのデフォルトのfileaccess
表からダウンロードするJSPページです。タグ本体のコンテンツ(<br>:
)は、ダウンロード可能なファイルのリストで各ファイル名の前に出力されます。DownloadServlet
サーブレット・パスをhttpDownload
タグ内で指定する必要があることに注意してください。タグ・ハンドラは、この情報を使用して、実際のダウンロードを実行するDownloadServlet
へのURLを構成します。
<%@ page language="java" %> <%@ taglib uri="/WEB-INF/fileaccess.tld" prefix="download" %> <%@ taglib uri="/WEB-INF/sqltaglib.tld" prefix="sql" %> <% String connStr=request.getParameter("connStr"); if (connStr==null) { connStr=(String)session.getValue("connStr");} else { session.putValue("connStr",connStr);} if (connStr==null) { %> <jsp:forward page="setconn.jsp" /> <% } %> <html> <body> <% String servletPath = "/servlet/download/"; %> <sql:dbOpen URL="<%= connStr %>" user="scott" password="tiger" > <fileaccess:httpDownload sourceType = "database" source="tagexample" servletPath = `<%= servletPath %>' > <br>: </fileaccess:httpDownload> </sql:dbOpen> <br>Done! </body> </html>
OC4Jには、JSPページでのEnterprise JavaBeansの使用を簡素化するためのカスタム・タグ・ライブラリが用意されています。
OC4J EJBタグの機能はJ2EE仕様に準拠しています。タグにより、web.xml
ファイル内の構成情報を使用してEJBを名前でインスタンス化できます。タグの1つはuseBean
タグで、標準JavaBeanの起動に使用する標準jsp:useBean
タグに似た機能があります。
これ以降の内容は、次のとおりです。
次の例のように、使用するEJBごとに、アプリケーションのweb.xml
ファイル内で<ejb-ref>
要素を使用します。
<ejb-ref> <ejb-ref-name>ejb/DemoSession</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <home>ejbdemo.DemoSessionHome</home> <remote>ejbdemo.DemoSession</remote> </ejb-ref>
<ejb-ref>
要素およびサブ要素は、Sun社のServlet Specification, Version 2.2(以上)に従って使用されます。つまり、次のようにします。
<ejb-ref-name>
サブ要素では、このコンポーネントにアクセスするためにJ2EEアプリケーションの他のコンポーネントで使用できる参照名を指定します。たとえば、この名前をロケーション値に使用できます。
<ejb-ref-type>
サブ要素ではEJBのカテゴリを指定します。
<home>
サブ要素では、EJBホーム・インタフェースのパッケージとタイプを指定します。
<remote>
サブ要素では、EJBリモート・インタフェースのパッケージとタイプを指定します。
これらの値は、EJBタグの属性値に反映されます。
この項では、OC4JのEJBタグの構文と属性について説明します。
EJBタグを使用するには、ファイルojsputil.jar
がインストール済でCLASSPATHに指定されていることを確認します。このファイルはOC4Jで提供されます。
タグ・ライブラリ・ディスクリプタ・ファイルejbtaglib.tld
をアプリケーションとともにデプロイし、このライブラリを使用するJSPページには適切なtaglib
ディレクティブを使用する必要があります。Oracle Application Serverインストールでは、TLDファイルは既知のタグ・ライブラリ・ディレクトリにあります。taglib
ディレクティブと既知のタグ・ライブラリ・ディレクトリについては、Oracle Application Server Containers for J2EE Support for JavaServer Pages開発者ガイド 10gを参照してください。
注意:
|
使用可能なタグは次のとおりです。
EJBインスタンスを初めて作成する際に、useHome
タグを使用してホーム・インタフェース・インスタンスを作成し、該当する場合は次の操作を行う必要があります。
useBean
タグ、useBean
タグのvalue
属性またはネストしたcreateBean
タグ
iterate
タグ
作成したEJBインスタンスは適切なスコープ・オブジェクト内に置かれ、以降のアクセスに必要なのはuseBean
タグのみとなります。
useHome
タグは、EJBのホーム・インタフェースを検索し、そのインスタンスを作成します。
<ejb:useHome id = "home_instance_name" type = "home_interface_type" location = "home_lookup_name" [ local = "true" | "false" ]/>
このタグは本体を使用しません。
id
(必須): ホーム・インタフェース・インスタンスの名前を指定します。インスタンスには開始タグからページの最後までの範囲内でアクセスできます。
type
(必須): ホーム・インタフェースの名前(Javaタイプ)を指定します。
location
(必須): アプリケーション内で目的のEJBのホーム・インタフェースを検索する際に使用するJNDI名です。
local
: ローカル・インタフェースを使用するかどうかを指定します。ローカル・インタフェースを使用する場合はtrue
に設定します。
<ejb:useHome id="aomHome" type="com.acme.atm.ejb.AccountOwnerManagerHome" location="java:comp/env/ejb/accountOwnerManager" />
EJB useBean
タグは、EJBをインスタンス化して使用する際に使用します。id
、type
およびscope
属性の使用方法は、通常のJavaBeanをインスタンス化する標準jsp:useBean
タグの場合と同じです。
EJBを初めてインスタンス化するときに、次の2つのメカニズムの一方を使用できます。
または
createBean
タグを使用すると、EJBインスタンスは親useBean
タグのvalue
属性に暗黙的に戻されます。EJBがインスタンス化された後、同じEJBインスタンスを使用する以降のuseBean
タグには、value
属性およびネストしたcreateBean
タグは不要です。
注意: EJBインスタンスのコレクションの使用方法は、「EJB iterateタグ」を参照してください。 |
<ejb:useBean id = "EJB_instance_name" type = "EJB_class_name" [ value = "<%=Object%>" ] [ scope = "page" | "request" | "session" | "application" ] > [ local = "true" | "false" ] > ... nested createBean tag for first instantiation (if no value attribute) ... </ejb:useBean>
id
(必須): EJBのインスタンス名を指定します。
type
(必須): EJBのクラス名です。
value
: EJBを初めてインスタンス化する際に、ネストしたcreateBean
タグを使用しない場合は、value
属性を使用してEJBObject
インスタンスを縮小状態に戻すことができます。これは、EJBをインスタンス化するためのメカニズムです。
scope
: EJBインスタンスのスコープを指定します。デフォルトのスコープ設定はpage
です。
local
: ローカル・インタフェースを使用するかどうかを指定します。ローカル・インタフェースを使用する場合はtrue
に設定します。
次の例は、インスタンス化済のEJBの使用方法を示しています。
<ejb:useBean id="bean" type="com.acme.MyBean" scope="session" />
次の例は、ローカル・インタフェースを指定してEJBを使用する方法を示しています。
<EJB:useHome id="home" location="java:comp/env/ejb/Demo" type="mypackage1.DemoLocalHome" local="true"/> <EJB:useBean id="demo" type="mypackage1.DemoLocal" local="true"> <EJB:createBean instance="<%=home.create()%>" /> </EJB:useBean> My name is "<%=demo.foo()%>"
EJBを初めてインスタンス化する際に、EJB useBean
タグのvalue
属性を使用しない場合は、EJB createBean
タグをuseBean
タグ内でネストして、EJBインスタンスの作成操作を実行する必要があります。これがEJBObject
インスタンスとなります。このインスタンスは、親useBean
タグのvalue
属性に暗黙的に戻されます。
<ejb:createBean instance = "<%=Object%>" />
このタグは本体を使用しません。
このcreateBean
タグ内では、EJBホーム・インタフェース・インスタンスのcreate()
メソッドによりEJBのインスタンスが作成されます。
<ejb:useBean id="bean" type="com.acme.MyBean" scope="session"> <ejb:createBean instance="<%=home.create()%>" /> </ejb:useBean>
このタグを使用してEJBインスタンスのコレクションを反復します。エンティティBeanの標準ファインダ・メソッドはコレクションを戻すため、これはエンティティBeanの場合に標準的です。
開始タグ内で、ホーム・インタフェースからのファインダの結果を介してコレクションを取得します。タグ本体で、必要に応じてコレクションを反復します。
注意:
|
<ejb:iterate id = "EJB_instance_name" type = "EJB_class_name" collection = "<%=Collection%>" [ max = "<%=Integer%>" ] > ... body ... </ejb:iterate>
本体は、コレクション内のEJBごとに1度ずつ評価されます。
id
(必須): イテレータ変数(各反復のEJBインスタンス名です。
type
(必須): EJBクラス名です。
collection
(必須): EJBコレクションを戻すために使用します。
max
: 必要に応じて反復するBeanの最大数を指定します。
<ejb:iterate id="account" type="com.acme.atm.ejb.Account" collection="<%=accountManager.getOwnerAccounts()%>" max="100"> <jsp:getProperty name="account" property="id" /> </ejb:iterate>
この項では、EJBタグの使用例としてセッションBeanの使用例とエンティティBeanの使用例を1つずつ示します。
この例は、アプリケーションの web.xml
ファイル内の次の構成を使用しています。
<ejb-ref> <ejb-ref-name>ejb/DemoSession</ejb-ref-name> <ejb-ref-type>Session</ejb-ref-type> <home>ejbdemo.DemoSessionHome</home> <remote>ejbdemo.DemoSession</remote> </ejb-ref>
サンプル・コードを次に示します。
<%@ page import="ejbdemo.*" %> <%@ taglib uri="/WEB-INF/ejbtaglib.tld" prefix="ejb" %> <html> <head> <title>Use EJB from JSP</title> </head> <body> <ejb:useHome id="home" type="ejbdemo.DemoSessionHome" location="java:comp/env/ejb/DemoSession" /> <ejb:useBean id="demo" type="ejbdemo.DemoSession" scope="session" > <ejb:createBean instance="<%=home.create()%>" /> </ejb:useBean> <heading2> Enterprise Java Bean: </heading2> <p><b> My name is "<%=demo.getName()%>". </b></p> </body> </html>
このサンプル・コードにより次の操作が実行されます。
home
インスタンスを作成します。useHome
タグのtype
値がweb.xml
ファイル内の<ejb-ref>
要素の<home>
値と一致することと、useHome
のlocation
値に<ejb-ref>
要素の<ejb-ref-name>
値が反映されることに注意してください。
home.create()
メソッドを使用してEJBのdemo
インスタンスを作成します。useBean
タグのtype
値がweb.xml
ファイルの<ejb-ref>
要素の<remote>
値と一致することに注意してください。
demo.getName()
メソッドを使用してユーザー名を出力します。
この例は、アプリケーションの web.xml
ファイル内の次の構成を使用しています。
<ejb-ref> <ejb-ref-name>ejb/DemoEntity</ejb-ref-name> <ejb-ref-type>Entity</ejb-ref-type> <home>ejbdemo.DemoEntityHome</home> <remote>ejbdemo.DemoEntity</remote> </ejb-ref>
サンプル・コードを次に示します。
<%@ page import="ejbdemo.*" %> <%@ taglib uri="/WEB-INF/ejbtaglib.tld" prefix="ejb" %> <html> <head> <title>Iterate over EJBs from JSP</title> </head> <body> <ejb:useHome id="home" type="ejbdemo.DemoEntityHome" location="java:comp/env/ejb/DemoEntity" /> <% int i=0; %> <ejb:iterate id="demo" type="ejbdemo.DemoEntity" collection="<%=home.findAll()%>" max="3" > <li> <heading2> Bean #<%=++i%>: </heading2> <b> My name is "<%=demo.getName()+"_"+ demo.getId()%>". </b> </li> </ejb:iterate> </body> </html>
このサンプル・コードにより次の操作が実行されます。
home
インスタンスを作成します。useHome
タグのtype
値がweb.xml
ファイル内の<ejb-ref>
要素の<home>
値と一致することと、useHome
のlocation
値に<ejb-ref>
要素の<ejb-ref-name>
値が反映されることに注意してください。
home.findAll()
メソッドを使用してEJBのコレクションを戻します。iterate
タグのtype
値がweb.xml
ファイルの<ejb-ref>
要素の<remote>
値と一致することに注意してください。
demo
を使用し、demo.getName()
およびdemo.getId()
メソッドを使用して各EJBから情報を出力し、コレクションを反復します。
OC4Jには、様々な操作を実行できるように、その他の多数のユーティリティ・タグが用意されています。この項では、これらのタグについて説明します。この項の内容は次のとおりです。
ユーティリティ・タグを使用するには、ファイルojsputil.jar
がインストール済でCLASSPATHに指定されていることを確認します。このファイルはOC4Jで提供されます。
タグ・ライブラリ・ディスクリプタ・ファイルutiltaglib.tld
をアプリケーションとともにデプロイし、このライブラリを使用するJSPページには適切なtaglib
ディレクティブを使用する必要があります。Oracle Application Serverインストールでは、TLDファイルは既知のタグ・ライブラリ・ディレクトリにあります。taglib
ディレクティブと既知のタグ・ライブラリ・ディレクトリについては、Oracle Application Server Containers for J2EE Support for JavaServer Pages開発者ガイド 10gを参照してください。
注意:
|
この項では、次のタグについて説明します。
このタグは、指定された金額をロケールに適した通貨書式で表示します。ロケールを指定しなければ、request
オブジェクトでロケールが検索されます。ロケールが検出されなければ、システムのデフォルト・ロケールが使用されます。
<util:displayCurrency amount = "<%=Double%>" [ locale = "<%=Locale%>" ] />
このタグは本体を使用しません。
<util:displayCurrency amount="<%=account.getBalance()%>" locale="<%=account.getLocale()%>" />
このタグは、指定された日付をロケールに適した書式で表示します。ロケールを指定しなければ、システムのデフォルト・ロケールが使用されます。
<util:displayDate date = "<%=Date%>" [ locale = "<%=Locale%>" ] />
このタグは本体を使用しません。
<util:displayDate date="<%=account.getDate()%>" locale="<%=account.getLocale()%>" />
このタグは、指定の数値をロケールにあわせて指定の書式で(オプション)表示します。ロケールを指定しなければ、システムのデフォルト・ロケールが使用されます。
<util:displayNumber number = "<%=Double%>" [ locale = "<%=Locale%>" ] [ format = "<%=Format%>" ] />
このタグは本体を使用しません。
number
(必須): 書式設定する数値を指定します。
locale
: オプションでロケール(java.util.Locale
インスタンス)を指定します。
format
: オプションで書式(java.text.Format
インスタンス)を指定します。
<util:displayNumber number="<%=shoe.getSize()%>" />
この項では、次のタグについて説明します。
このタグを使用してコレクションを反復します。コレクションを開始タグ内で取得し、本体で反復します。
<util:iterate id = "instance_name" type = "class_name" collection = "<%=Collection%>" [ max = "<%=Integer%>" ] > ... body ... </util:iterate>
本体は、コレクション内の要素ごとに1度ずつ評価されます。
id
(必須): イテレータ変数(各反復のインスタンス名)です。
type
(必須): クラス名です。コレクションはこのタイプのインスタンスの集合です。
collection
(必須): コレクション自体です。
max
: オプションで反復する最大要素数を指定します。
<util:iterate id="contact" type="com.acme.connections.Contact" collection="<%=company.getContacts()%>" > <jsp:getProperty name="contact" property="name"/> </util:iterate>
このタグを使用してタグ本体を評価し、ユーザーが指定のアプリケーション・ロールに属しているかどうかに応じてJSPページの本体に含めます。タグ・ハンドラは、request
オブジェクトのisUserInRole()
メソッドを実行します。
ロールの概念は、Sun社のJava Servlet Specification, Version 2.2(以上)に従います。ロールは、アプリケーションのweb.xml
ファイルの<role>
要素で定義されます。
<util:ifInRole role = "<%=String%>" [ include = "true" | "false" ] > ... body to include ... </util:ifInRole>
role
(必須): ユーザーがこの属性で指定したロールに属しているかどうかをチェックします。
include
: ユーザーが指定のロールに属している場合にのみ本体を含めるには、true
設定(デフォルト)を使用します。ユーザーが指定のロールに属していない場合にのみ本体を含めるには、false
設定を使用します。
<util:ifInRole role="users" include="true"> Logged in as <%=request.getRemoteUser()%><br> <form action="logout.jsp"> <input type="submit" value="Log out"><br> </form> </util:ifInRole> <util:ifInRole role="users" include="false"> <form method="POST"> Username: <input name="j_username" type="text"><br> Password: <input name="j_password" type="password"><br> <input type="submit" value="Log in"> </form> </util:ifInRole>
このタグは、現在のファイルの最終変更日をロケールに適した書式で表示します。ロケールを指定しなければ、request
オブジェクトでロケールが検索されます。ロケールが検出されなければ、システムのデフォルト・ロケールが使用されます。
<util:lastModified [ locale = "<%=Locale%>" ] />
このタグは本体を使用しません。
<util:lastModified />
Copyright © 1997, 2006, Oracle. All rights reserved.