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. |
|