| Oracle Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス 10g(10.1.3.1.0) B31854-01 |
|
ファイルへのアクセス(アップロードとダウンロード)および電子メール用のOC4JタグとJavaBeansについて説明します。電子メール用のタグとJavaBeansによって、添付にファイル・アクセス機能が使用されます。この章の構成は、次のとおりです。
OC4Jには、JSPページとサーブレットに便利なファイルのアップロード機能とダウンロード機能を追加する、標準準拠のタグ・ライブラリとJavaBeansが用意されています。ファイルは、ファイル・システムやデータベースとの間でアップロードしたりダウンロードできます。
次の各項では、ファイル・アクセス・タグとファイル・アクセスBeanについて説明します。
開発者は、カスタム・タグまたはJavaBeansのいずれかを必要に応じて使用し、ユーザーによるファイルのアップロードまたはダウンロードを可能にするアプリケーションをプログラミングできます。いずれの場合も、アプリケーションは、アップロードの場合はクライアント・システム上のファイルの元の場所またはダウンロードの場合はクライアント・システム上のダウンロード先の場所を、ユーザーがブラウザを介して指定するようにプログラミングされます。アップロード用のJSPページについて、OC4Jには、ファイルの元の場所を指定する際に使用するフォームを作成するconvenienceタグの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エントリが存在している必要があります。次に例を示します。
fileaccess.basedir=/tmp
ベース・ディレクトリの下には、サブディレクトリ(各認可ユーザーのサブディレクトリなど)を必要に応じて置く必要があります。ベース・ディレクトリの下の接続先サブディレクトリは、アップロードBeanまたはアップロード・タグの属性を使用して指定する必要があります。すべてのディレクトリとサブディレクトリが存在し、書込み可能な状態である必要があります。OC4Jの機能を使用して、作成したり書込み可能にすることはできません。
接続先がデータベース内の場合は、デフォルトの表fileaccessを必要に応じて使用できます。この表は、付属のfileaccess.sqlスクリプトを使用して作成します。あるいは、必要な列型が含まれた他の既存の表を利用できます。いずれの場合も、データベースへの接続をoracle.jsp.dbutil.ConnBeanまたは標準のjava.sql.Connectionのインスタンスとして指定する必要があります。ConnBeanインスタンスを明示的に指定するか、またはJSPページでdbOpenタグ内にhttpUploadタグをネストした結果として暗黙的に提供することもできます。(ConnBean JavaBeanとdbOpenタグの詳細は、第3章「データ・アクセスJavaBeansとデータ・アクセス・タグ」を参照してください。)
さらに、アップロードBeanまたはアップロード・タグの属性を使用して接続先を指定する必要があります。接続先は、データベース表の接頭辞列に配置されるJava文字列の値です。接頭辞は、ファイル・システム・パスと同じです。
ファイル・データは、BLOBまたはCLOBとしてデータベースに書き込まれます。どちらにするかは、アップロードBeanまたはアップロード・タグ属性を使用して指定できます。
デフォルトのfileaccess表を使用しない場合は、アップロードBeanまたはアップロード・タグの属性を使用して、データベース表の名前およびファイル・データ、ファイル接頭辞およびファイル名を格納する列の名前を指定する必要があります。それ以外の表を使用する場合は、次のように、fileaccessのパターンに準拠する必要があります。
注意
ConnBeanインスタンスを使用する場合は、接続を起動するjsp:useBeanタグに指定したスコープの最後で、接続が自動的にクローズされます。Connectionインスタンスのような機能はありません。
ConnBeanでは、JspScopeListenerインタフェースが使用されます(このインタフェースが必須)。このユーティリティの詳細は、「JspScopeListenerによるJSPのイベント処理」を参照してください。
データベースへのアップロードの場合、データベース表には、指定のファイルに対する特定の認可ユーザーを示す列がありません。したがって、すべてのユーザーは、ファイルの接頭辞を知らなくても、他のユーザーがアップロードしたファイルを警告なしに参照できます。これを防止するために、各接頭辞に適切なユーザー名を付加できます。
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が提供するファイル・アップロードおよびダウンロード用JavaBeans(それぞれ、HttpUploadBeanとHttpDownloadBean)の属性とメソッドについて説明します。
OC4Jが提供する、ファイルのダウンロードを実際に実行するDownloadServlet、およびファイルのアップロードとダウンロードに関連する例外でファイル・アクセスJavaBeansが使用するFileAccessExceptionクラスについても簡単に説明します。
JavaBeanの仕様に準拠して、ファイル・アップロードおよびダウンロード用JavaBeansには、引数なしのコンストラクタがあります。
oracle.jsp.webutil.fileaccess.HttpUploadBean JavaBeanには、アップロードに使用する情報を指定するためのsetterメソッドが多数あります。また対応するほとんどのgetterメソッドも含まれています。必須属性と適切な属性をすべて設定した後、upload()メソッドを使用してアップロードを実行します。アップロードされたファイルの名前を表示するメソッドもあります。そのため通常は、情報を含むメッセージをブラウザに提供できます。
HttpUploadBeanは、HttpDownloadBeanと同様に、HttpFileAccessBeanを拡張します。ただし、これ自体は、公開使用を目的としていません。
関連情報は、「ファイル・アップロードの概要」を参照してください。
次に、HttpUploadBeanの必須属性のサマリーを示します。
destination
destinationType、connection
fileaccess表以外のデータベース表へのアップロードに必須: table、prefixColumn、fileNameColumn、dataColumn
fileType
さらに、ファイル・システムへのアップロードでは、setBaseDir()メソッドをコールして、サーブレット・コンテキストとHTTPリクエスト・オブジェクトを指定する必要があります。その結果、Beanはベース・ディレクトリを指定するfileaccess.propertiesファイルを検出できます。
次に、HttpUploadBeanのパブリック・メソッドを説明します。
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がファイル接頭辞として使用されます。(ベース・ディレクトリはありません。)この接頭辞はファイル・システム・パスと同じで、ファイルを階層にグループ化するために使用できます。接続先文字列には、「.」や「/」などのセパレータ文字を含めることができます。
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()メソッドを使用して、既存ファイルの上書きまたは同じファイル名と接頭辞を持つ行の更新を行います。このメソッドは、ファイル・システムとデータベースのアップロード両方に関係しています。
上書きはデフォルトで有効化されていますが、文字列「true」またはブール値trueのoverwrite設定で、明示的に有効化できます。上書きの無効化は、文字列「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リクエスト・オブジェクトを指定する必要があります。その結果、Beanはベース・ディレクトリを指定するfileaccess.propertiesファイルを検出できます。
次に、HttpDownloadBeanのパブリック・メソッドを説明します。
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がファイル接頭辞として使用されます。(ベース・ディレクトリは関係ありません。)この接頭辞はファイル・システム・パスと同じで、ファイルを階層にグループ化するために使用できます。再帰的なダウンロードが有効な場合(setRecurse()メソッドを使用)は、「%」が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」などの接頭辞を持つファイルに対しても一致を検出します。
再帰機能はデフォルトで有効化されていますが、文字列「true」またはブール値trueのrecurse設定で、明示的に有効化できます。再帰機能の無効化は、文字列「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サーバーでのクラスのマッピングは、サーブレット・パス設定にも反映する必要があります。httpDownloadタグを使用する場合は、servletPath属性を使用して反映し、HttpDownloadBeanを使用する場合は、アプリケーション・コード内に反映します。
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ファイルがインストール済で、クラスパスに存在していることを確認してください。このファイルは、OC4Jに同梱されていて、予約済のタグ・ライブラリ・ディレクトリにあります。
fileaccess.tldが、アプリケーションで使用可能である必要があります。また、ライブラリを使用するJSPページには、適切なtaglibディレクティブが存在する必要があります。Oracle Application Serverのインストール時、TLDはojsputil.jarに配置されます。fileaccess.tldのuri値は次のとおりです。
http://xmlns.oracle.com/j2ee/jsp/tld/ojsp/fileaccess.tld
taglibディレクティブ、予約済のタグ・ライブラリ・ディレクトリ、TLDファイルおよびuri値の内容の詳細は、『Oracle Containers for J2EE JavaServer Pages開発者ガイド』を参照してください。
|
注意
|
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: ファイル名の入力ボックス(複数可)の文字幅を指定します。デフォルトは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タグの詳細は、第3章「データ・アクセスJavaBeansとデータ・アクセス・タグ」を参照してください。
scope: データベースへのアップロードでは、接続に使用するConnBeanインスタンスのスコープを指定します。ここで指定するスコープ設定は、dbOpenタグの場合と同様に、ConnBeanインスタンスの作成時のスコープ設定と一致している必要があります。httpUploadタグがdbOpenタグ内にネストされている場合は、connIdまたはscopeの指定は不要です。この場合、情報はdbOpenタグから取得されます。それ以外の場合、デフォルトのスコープ設定は「page」です。
overwrite: アップロードするファイルと同じパスと名前を持つ既存ファイルを上書きしない場合、またはデータベースのアップロードで、同じファイル名と接頭辞を持つ行を更新しない場合は、「false」に設定します。この場合、ファイルがすでに存在していると、エラーが生成されます。デフォルトでは、overwriteは「true」に設定され、httpUploadはファイルを上書きします。
fileType: データベースへのアップロードでは、文字データの場合は「character」に設定します。この文字データはCLOBに書き込まれます。デフォルトの設定はバイナリ・データの「binary」です。このバイナリ・データはBLOBに書き込まれます。
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="http://xmlns.oracle.com/j2ee/jsp/tld/ojsp/fileaccess.tld" prefix="fileaccess" %> <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タグ内に存在することによって、データベース接続を取得している点に注意してください。必要な場合は、接続の取得にuseDataSource.jspが使用されている点にも注意してください。「useDataSource.jsp」を参照してください。
<%@ page language="java" %> <%@ taglib uri="http://xmlns.oracle.com/j2ee/jsp/tld/ojsp/fileaccess.tld" prefix="fileaccess" %> <%@ taglib uri="http://xmlns.oracle.com/j2ee/jsp/tld/ojsp/sqltaglib.tld" prefix="sql" %> <% String dataSrcStr=request.getParameter("dataSrcStr"); // get conn string if (dataSrcStr==null) { dataSrcStr=(String)session.getValue("dataSrcStr"); } else { session.putValue("dataSrcStr",dataSrcStr); } if (dataSrcStr==null) { %> <jsp:forward page="useDataSource.jsp" /> <% } %> <html><body> <sql:dbOpen dataSource="<%= dataSrcStr %>" > <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タグの詳細は、第3章「データ・アクセスJavaBeansとデータ・アクセス・タグ」を参照してください。
scope: データベースからのダウンロードでは、接続に使用するConnBeanインスタンスのスコープを指定します。ここで指定するスコープ設定は、dbOpenタグの場合と同様に、ConnBeanインスタンスの作成時のスコープ設定と一致している必要があります。httpDownloadタグがdbOpenタグ内にネストされている場合は、connIdまたはscopeの指定は不要です。この場合、情報はdbOpenタグから取得されます。それ以外の場合、デフォルトのスコープ設定は「page」です。
recurse: 再帰的なダウンロード機能を使用しない場合は、「false」に設定します。再帰的なダウンロードでは、ファイル・システムのサブディレクトリ内のファイルまたはデータベース接頭辞の追加情報を含むファイルも、ダウンロード可能としてリストされます。データベースからのこの機能の例として、sourceが「/user」に設定されていると仮定します。再帰機能では、「/user/bill」や「/user/mary」、および「/user1」、「/user2」、「/user1/tom」、「/user2/susan」などの接頭辞を持つファイルに対しても一致を検出します。デフォルト・モードは再帰的なダウンロードですが、「true」に設定すると、明示的に有効化できます。
fileType: データベースからのダウンロードでは、文字データの場合は「character」に設定します。この文字データはCLOBから取得されます。デフォルトの設定はバイナリ・データの「binary」です。このバイナリ・データはBLOBから取得されます。
table: デフォルトのfileaccess表以外のデータベース表からのダウンロードでは、この属性を使用して表名を指定します。
prefixColumn: デフォルトのfileaccess表以外のデータベース表からのダウンロードでは、この属性を使用してファイル接頭辞を含む列の名前を指定します。これは、source値が格納される場所です。
fileNameColumn: デフォルトのfileaccess表以外のデータベース表からのダウンロードでは、この属性を使用してファイル名を含む列の名前を指定します。ファイル名には、ファイル名の拡張子が含まれます。
dataColumn: デフォルトのfileaccess表以外のデータベース表からのダウンロードでは、この属性を使用してファイル・コンテンツを含む列の名前を指定します。
次に、httpDownloadタグを使用してデータベースのデフォルトのfileaccess表からダウンロードするJSPページの例を示します。タグ・ボディのコンテンツ(<br>:)は、ダウンロード可能なファイルのリストにある各ファイル名の前に出力されます。DownloadServletサーブレットのパスをhttpDownloadタグに指定する必要があることに注意してください。タグ・ハンドラは、このパスを使用して、ダウンロードを実際に実行するDownloadServletへのURLを構成します。
<%@ page language="java" %> <%@ taglib uri="http://xmlns.oracle.com/j2ee/jsp/tld/ojsp/fileaccess.tld" prefix="fileaccess" %> <%@ taglib uri="http://xmlns.oracle.com/j2ee/jsp/tld/ojsp/sqltaglib.tld" prefix="sql" %> <% String dataSrcStr=request.getParameter("dataSrcStr"); if (dataSrcStr==null) { dataSrcStr=(String)session.getValue("dataSrcStr");} else { session.putValue("dataSrcStr",dataSrcStr);} if (dataSrcStr==null) { %> <jsp:forward page="useDataSource.jsp" /> <% } %> <html> <body> <% String servletPath = "/servlet/download/"; %> <sql:dbOpen dataSource="<%= dataSrcStr %>" > <fileaccess:httpDownload sourceType = "database" source="tagexample" servletPath = '<%= servletPath %>' > <br>: </fileaccess:httpDownload> </sql:dbOpen> <br>Done! </body> </html>
多くの場合、Webサイトの状態またはユーザー操作に基づいて、電子メール・メッセージをWebアプリケーションから送信できると便利です。Sun社では、このために、プラットフォームやプロトコルに依存しないフレームワークの仕様を定めました。これは、JavaMail APIと呼ばれ、javax.mailパッケージとサブパッケージを使用します。
利便性向上のために、Oracleには、サーブレットやJSPページを介して電子メール機能を使用できるように、このJavaMail APIに基づいたJavaBeanと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ファイル(JavaMailパッケージを含む)とJavaBeans Activation Framework(JAF)のjaf.jarファイルが、クラスパスに存在している必要があります。これらのファイルは、OC4Jに含まれています。
sendmail.propertiesが、アプリケーションの/WEB-INFディレクトリに存在する必要があります。「添付の有効化」を参照してください。
メールBeanとメール・タグによって、電子メール・メッセージとともに添付を送信できます。(このサポートは、OC4J 9.0.3で実装されています。)操作モードは次の3つです。
クライアント・サイド添付の場合、ファイルは、処理の一部として、サーバー・マシンに自動的にアップロードされます。複数のクライアント・サイド添付はサポートされません。
添付が有効かどうか、および添付の種類は、アプリケーションの/WEB-INFディレクトリにあるsendmail.propertiesファイルによって決まります。次の内容を含むファイルでは、添付が無効化されます。
## email attachment permissions sendmail.attachment=none
このファイルを/WEB-INFに作成し、メール添付を使用するOC4Jインスタンス用に適切に更新する必要があります。
1つのアプリケーションでサポートできるのは、サーバー・サイド添付かクライアント・サイド添付のいずれかです。両方はサポートできません。
サーバー・サイド添付を有効化するには、設定をserverに変更します。
sendmail.attachment=server
クライアント・サイド添付を有効化するには、設定をclientに変更します。
sendmail.attachment=client
複数設定するとエラーになります。
メール・タグでサーバー・サイド添付が有効化されている場合、1つ以上のサーバー・サイド・ファイルをメッセージに添付するには、serverAttachmentタグ属性を使用します。クライアント・サイド添付が有効化されている場合、クライアント・サイド・ファイル(最大1ファイル)をメッセージに添付するには、clientAttachmentタグ属性を使用します。「sendMailタグの説明」を参照してください。1つのアプリケーションでサポートできるのは、2つの添付モードのいずれか1つです。両方はサポートできません。
サーバー添付モードとクライアント添付モードの両方のメールBeanには、添付ファイルの名前を指定または取得するメソッドが含まれています。setServerAttachment()、getServerAttachment()、setClientAttachment()およびgetClientAttachment()の詳細は、「SendMailBeanメソッドの説明」を参照してください。
メール・タグまたはメールBeanでは、サーバー・サイド・ファイルのリストは、カンマ区切りまたはセミコロン区切りで指定できます。ただし、スペース区切りは、ファイル名にスペースが許可されているオペレーティング・システムの場合でも使用できません。
メール添付に関する次の使用方法は、メール・タグとメールBeanの両方に適用されます。
httpUploadタグは、バックグラウンドで使用されます。ファイルはOC4Jサーバー・マシン上の一時的な場所にアップロードされ、メッセージが送信された後は削除されます。httpUploadタグの制限または要件は、すべてクライアント・サイドのメール添付にも適用されます。「ファイル・アップロードおよびダウンロード用タグの説明」を参照してください。
OC4Jが提供するoracle.jsp.webutil.email.SendMailBean JavaBeanは、サーブレットからJSPアプリケーションまでの電子メール機能をサポートします。これをJSPページで使用するには、標準のjsp:useBeanタグを使用してインスタンス化できます。(ただし、JSPアプリケーションの場合は、通常、SendMailBeanではなくsendMailタグを使用します。
「sendMailタグの説明」を参照してください。)
SendMailBeanを使用するには、ojsputil.jar、mail.jarおよびactivation.jarの各ファイルがインストール済で、クラスパスに存在していることを確認します。これらのファイルは、OC4Jに含まれています。
SendMailBeanをコードで使用する場合は、次の内容を指定する必要があります。
送信者の指定には、setSender()メソッドを使用します。
プライマリ受信者(複数可)の指定には、setRecipient()メソッドを使用します。
javax.mail.Session)JavaMailセッションは、次の3つの方法で設定されます。
setHost()メソッドを使用してホスト・システムを指定します。この場合、JavaMailセッション・オブジェクトは自動的に作成されます。
setMailSession()メソッドを使用して、JavaMailセッション・オブジェクトを直接指定します。
setSession()メソッドを使用して、JSPページ・コンテキストにある「セッション文字列javax.mail.Sessionオブジェクト」のペアでアクセスできる既存のJavaMailセッション・オブジェクトの名前を指定します。この場合は、sendMessage()メソッドをコールして電子メール・メッセージを送信するときに、ページ・コンテキスト・インスタンスを入力パラメータとして指定する必要があります。
その他のSendMailBeanの属性は、すべてオプションです。
この項では、メール・メッセージの送信、メール・セッションのクローズおよびBean属性の設定と取得に使用するSendMailBeanのメソッドを示し、内容を説明します。
次に、SendMailBeanのパブリック・メソッドを示します。
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()JavaMailセッション・インスタンスのリソースをSendMailBeanインスタンスから解放する場合は、このメソッドを使用します。このメソッドによって、実際にセッションがクローズされることはありません。
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」です。ただし、このMIMEタイプまたは他の「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の各ファイルがインストール済で、クラスパスに存在していることを確認してください。これらのファイルはOC4Jに含まれています。ojsputil.jarは予約済のタグ・ライブラリ・ディレクトリにあります。
sendMailタグには独自のタグ・ライブラリ・ディスクリプタ・ファイルemail.tldが含まれています。このファイルは、アプリケーションで使用可能である必要があります。また、タグを使用するJSPページには、適切なtaglibディレクティブが存在する必要があります。Oracle Application Serverのインストール時、TLDはojsputil.jarに配置されます。email.tldのuri値は次のとおりです。
http://xmlns.oracle.com/j2ee/jsp/tld/ojsp/email.tld
taglibディレクティブ、予約済のタグ・ライブラリ・ディレクトリ、TLDファイルおよびuri値の内容の詳細は、『Oracle Containers for J2EE JavaServer Pages開発者ガイド』を参照してください。
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」です。ただし、このMIMEタイプまたは他の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="http://xmlns.oracle.com/j2ee/jsp/tld/ojsp/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>
|
![]() Copyright © 2002, 2006 Oracle Corporation. All Rights Reserved. |
|