ヘッダーをスキップ

Oracle Containers for J2EE JSPタグ・ライブラリおよびユーティリティ・リファレンス
10g(10.1.3.1.0)

B31854-01
目次
目次
索引
索引

戻る 次へ

8 ファイル・アクセスとメール用のBeanとタグ

ファイルへのアクセス(アップロードとダウンロード)および電子メール用のOC4JタグとJavaBeansについて説明します。電子メール用のタグとJavaBeansによって、添付にファイル・アクセス機能が使用されます。この章の構成は、次のとおりです。

ファイル・アクセスJavaBeansとファイル・アクセス・タグ

OC4Jには、JSPページとサーブレットに便利なファイルのアップロード機能とダウンロード機能を追加する、標準準拠のタグ・ライブラリとJavaBeansが用意されています。ファイルは、ファイル・システムやデータベースとの間でアップロードしたりダウンロードできます。

次の各項では、ファイル・アクセス・タグとファイル・アクセスBeanについて説明します。

OC4Jのファイル・アクセス機能の概要

開発者は、カスタム・タグまたはJavaBeansのいずれかを必要に応じて使用し、ユーザーによるファイルのアップロードまたはダウンロードを可能にするアプリケーションをプログラミングできます。いずれの場合も、アプリケーションは、アップロードの場合はクライアント・システム上のファイルの元の場所またはダウンロードの場合はクライアント・システム上のダウンロード先の場所を、ユーザーがブラウザを介して指定するようにプログラミングされます。アップロード用のJSPページについて、OC4Jには、ファイルの元の場所を指定する際に使用するフォームを作成するconvenienceタグのhttpUploadFormが用意されています。

接続先のファイル・システムまたはデータベースの場所の指定を含め、アップロードの処理には、HttpUploadBean JavaBeanまたはhttpUploadタグを使用します。ソース・ファイル・システムまたはデータベースの場所の指定を含め、ダウンロードの処理には、HttpDownloadBeanまたはhttpDownloadタグを使用します。Beanは、HttpFileAccessBeanを拡張します。ただし、これは、公開使用を目的としていません。すべてのBeanは、oracle.jsp.webutil.fileaccessパッケージにあります。

ファイル・アップロードの概要

ユーザーがアップロードするファイルの場所をJSPページに指定するためのフォームは、httpUploadFormタグを使用して作成できます。このタグによって、ユーザーはアップロードするファイルを選択し、必要な複数パートのHTTPリクエストを作成できます。標準のHTMLフォームを使用しても、リクエストを作成できます。

HttpUploadBean JavaBeanまたはhttpUploadタグを使用して、複数の部分に分割されたフォームでエンコードされたデータ・ストリームを受信および処理し、ファイル・システムまたはデータベースのいずれかの適切な場所にそのファイルを書き込みます。ターゲット・ファイルまたはデータベース行がすでに存在する場合、前のデータを上書きするかどうかを決定できる機能があります。


注意

アップロードするファイルの最大サイズは、2GBです。 


ファイル・システムの接続先

接続先がファイル・システム内の場合は、ベース・ディレクトリを指定するプロパティ・ファイルを用意する必要があります。プロパティ・ファイルは、fileaccess.propertiesという名前でアプリケーションの/WEB-INFディレクトリに配置し、さらに、ディレクトリへの絶対パスを示すfileaccess.basedirエントリが存在している必要があります。次に例を示します。

fileaccess.basedir=/tmp


注意

Windowsシステムでも、ディレクトリ・パスには円記号ではなくスラッシュを使用する必要があります。

fileaccess.basedir=c:¥tmp

さらに、OC4Jがインストールされているドライブと同じドライブ(この場合はC:)を指定する必要があります。 


ベース・ディレクトリの下には、サブディレクトリ(各認可ユーザーのサブディレクトリなど)を必要に応じて置く必要があります。ベース・ディレクトリの下の接続先サブディレクトリは、アップロードBeanまたはアップロード・タグの属性を使用して指定する必要があります。すべてのディレクトリとサブディレクトリが存在し、書込み可能な状態である必要があります。OC4Jの機能を使用して、作成したり書込み可能にすることはできません。

データベースの接続先

接続先がデータベース内の場合は、デフォルトの表fileaccessを必要に応じて使用できます。この表は、付属のfileaccess.sqlスクリプトを使用して作成します。あるいは、必要な列型が含まれた他の既存の表を利用できます。いずれの場合も、データベースへの接続をoracle.jsp.dbutil.ConnBeanまたは標準のjava.sql.Connectionのインスタンスとして指定する必要があります。ConnBeanインスタンスを明示的に指定するか、またはJSPページでdbOpenタグ内にhttpUploadタグをネストした結果として暗黙的に提供することもできます。(ConnBean JavaBeanとdbOpenタグの詳細は、第3章「データ・アクセスJavaBeansとデータ・アクセス・タグ」を参照してください。)


注意

現在、java.sql.Connection型がサポートされるのはファイル・アクセスBeanの場合のみで、タグの場合はサポートされません。 


さらに、アップロードBeanまたはアップロード・タグの属性を使用して接続先を指定する必要があります。接続先は、データベース表の接頭辞列に配置されるJava文字列の値です。接頭辞は、ファイル・システム・パスと同じです。

ファイル・データは、BLOBまたはCLOBとしてデータベースに書き込まれます。どちらにするかは、アップロードBeanまたはアップロード・タグ属性を使用して指定できます。

デフォルトのfileaccess表を使用しない場合は、アップロードBeanまたはアップロード・タグの属性を使用して、データベース表の名前およびファイル・データ、ファイル接頭辞およびファイル名を格納する列の名前を指定する必要があります。それ以外の表を使用する場合は、次のように、fileaccessのパターンに準拠する必要があります。

アップロードに関するセキュリティ上の考慮事項

データベースへのアップロードの場合、データベース表には、指定のファイルに対する特定の認可ユーザーを示す列がありません。したがって、すべてのユーザーは、ファイルの接頭辞を知らなくても、他のユーザーがアップロードしたファイルを警告なしに参照できます。これを防止するために、各接頭辞に適切なユーザー名を付加できます。

ファイル・ダウンロードの概要

HttpDownloadBean JavaBeanまたはhttpDownloadタグは、次のように使用します。

再帰的なダウンロードを行うかどうかを指定する機能もあります。このダウンロードでは、サブディレクトリ内のファイルまたはデータベース接頭辞の追加情報を含むファイルも、ダウンロード可能になります。データベースのダウンロードの場合の接頭辞はファイル・システム・パスと同じで、ファイルを階層にグループ化するために使用できます。データベースからの再帰的なダウンロードの例として、接頭辞に/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データをフェッチします。(詳細は、「ダウンロード・サーブレット」を参照してください。)

ダウンロードに関するセキュリティ上の考慮事項

ダウンロードの場合は、ユーザーがソース(サーバー・サイド)・ファイル・システムまたはデータベースの内容を参照できる機能に制限を設けることを検討してください。警告がない場合は、次のような例が発生する可能性があります。

これが心配な場合は、次のような保護手段が考えられます。

ファイル・アップロードおよびダウンロード用JavaBeanとクラスの説明

この項では、OC4Jが提供するファイル・アップロードおよびダウンロード用JavaBeans(それぞれ、HttpUploadBeanHttpDownloadBean)の属性とメソッドについて説明します。

OC4Jが提供する、ファイルのダウンロードを実際に実行するDownloadServlet、およびファイルのアップロードとダウンロードに関連する例外でファイル・アクセスJavaBeansが使用するFileAccessExceptionクラスについても簡単に説明します。

JavaBeanの仕様に準拠して、ファイル・アップロードおよびダウンロード用JavaBeansには、引数なしのコンストラクタがあります。


注意

ファイル・アップロードおよびダウンロード用JavaBeansを使用するには、ojsputil.jarファイルがインストール済で、クラスパスに存在していることを確認します。このファイルは、OC4Jに含まれています。 


HttpUploadBean

oracle.jsp.webutil.fileaccess.HttpUploadBean JavaBeanには、アップロードに使用する情報を指定するためのsetterメソッドが多数あります。また対応するほとんどのgetterメソッドも含まれています。必須属性と適切な属性をすべて設定した後、upload()メソッドを使用してアップロードを実行します。アップロードされたファイルの名前を表示するメソッドもあります。そのため通常は、情報を含むメッセージをブラウザに提供できます。

HttpUploadBeanは、HttpDownloadBeanと同様に、HttpFileAccessBeanを拡張します。ただし、これ自体は、公開使用を目的としていません。

関連情報は、「ファイル・アップロードの概要」を参照してください。

必須属性のサマリー

次に、HttpUploadBeanの必須属性のサマリーを示します。

さらに、ファイル・システムへのアップロードでは、setBaseDir()メソッドをコールして、サーブレット・コンテキストとHTTPリクエスト・オブジェクトを指定する必要があります。その結果、Beanはベース・ディレクトリを指定するfileaccess.propertiesファイルを検出できます。

メソッド

次に、HttpUploadBeanのパブリック・メソッドを説明します。


注意

HttpUploadBeanの属性とsetterメソッドの多くは、HttpDownloadBeanの場合と同じです。 


この例では、単純な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>

HttpDownloadBean

oracle.jsp.webutil.fileaccess.HttpDownloadBean JavaBeanには、ダウンロードに使用する情報を指定するためのsetterメソッドが多数あります。また対応するほとんどのgetterメソッドも含まれています。必須属性と適切な属性をすべて設定した後、listFiles()メソッドを使用して、ダウンロードするファイルのリストを表示します。実際のダウンロードでは、OC4Jが提供するDownloadServletを使用して一度に1つのファイルがダウンロードされます。「ダウンロード・サーブレット」を参照してください。


注意

DownloadServletのURLをアプリケーション・コード内に構成する必要があります。 


HttpDownloadBeanは、HttpUploadBeanと同様に、HttpFileAccessBeanを拡張します。ただし、これ自体は、公開使用を目的としていません。

関連情報は、「ファイル・アップロードの概要」を参照してください。

必須属性のサマリー

次に、HttpDownloadBeanの必須属性のサマリーを示します。

さらに、ファイル・システムからのダウンロードでは、setBaseDir()メソッドをコールして、サーブレット・コンテキストとHTTPリクエスト・オブジェクトを指定する必要があります。その結果、Beanはベース・ディレクトリを指定するfileaccess.propertiesファイルを検出できます。

メソッド

次に、HttpDownloadBeanのパブリック・メソッドを説明します。


注意

HttpDownloadBeanの属性とsetterメソッドの多くは、HttpUploadBeanの場合と同じです。 


  • 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を「*」に設定します。


    注意

    通常、source値の少なくとも一部は、ユーザー入力に基づいています。 


  • void setSourceType(String sourceType)
    throws FileAccessException

  • void setSourceType(int sourceType)
    throws FileAccessException

    オーバーロードされたsetSourceType()メソッドを使用して、ダウンロード元がファイル・システムであるかデータベースであるかを指定します。

    データベースからのダウンロードでは、sourceTypeを、文字列「database」、定義済のString定数FileAccessUtil.DATABASEint型の値1、または定義済のint型の定数FileAccessUtil.LOCATION_TYPE_DATABASEのいずれかに設定します。

    ファイル・システムからのダウンロードはデフォルトです。ただし、これを明示的に指定する場合は、sourceTypeを、文字列「filesystem」、定義済のString定数FileAccessUtil.FILESYSTEMint型の値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」またはブール値truerecurse設定で、明示的に有効化できます。再帰機能の無効化は、文字列「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を使用する場合は、アプリケーション・コード内に反映します。

    FileAccessExceptionクラス

    oracle.jsp.webutil.fileaccess.FileAccessExceptionクラスは、OC4Jが提供する便利なクラスで、ファイル・アクセスに関する例外を処理します。このクラスは、標準のjava.sql.SQLExceptionクラスとjava.io.IOExceptionクラスの機能をラップします。また、SQLとI/Oの例外処理に加えて、ファイル・アクセスBeanからの例外も処理します。

    ファイル・アップロードおよびダウンロード用タグの説明

    OC4Jには、ファイル・アップロード用のhttpUploadタグがあります。このタグでは、HttpUploadBeanを使用します。httpUploadFormタグは、ユーザーがアップロードするファイルを指定するフォームのプログラミングで使用すると便利です。このフォームのコードは手動でも作成できます。

    OC4Jには、ファイルのダウンロード用にカスタムhttpDownloadタグが用意されています。このタグでは、HttpDownloadBeanを使用します。この項では、これらのタグとその属性について説明します。

    ファイルのアップロードおよびダウンロード用タグを使用する場合は、次の要件に注意してください。

    taglibディレクティブ、予約済のタグ・ライブラリ・ディレクトリ、TLDファイルおよびuri値の内容の詳細は、『Oracle Containers for J2EE JavaServer Pages開発者ガイド』を参照してください。


    注意

    • このタグ構文では、接頭辞「fileaccess:」が使用されます。慣例的にこのように表記しますが、必須ではありません。任意の接頭辞をtaglibディレクティブに指定できます。

    • このマニュアルのタグ構文規則の詳細は、「タグ構文の表記と意味」を参照してください。

     

    httpUploadFormタグ

    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" ] />
    


    注意

    httpUploadFormタグは、必要に応じてボディを使用できます。たとえば、ボディがユーザー・プロンプトで構成されている場合があります。 


    属性

    httpUploadタグ

    このタグは、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" ] />
    


    注意

    ファイル・システムへのアップロードでは、ベース・ディレクトリは、タグ・ハンドラによってJSPページ・コンテキストから自動的に取得できます。 


    属性

    次に、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>
    


    注意

    この例のdbOpenタグの場合は、データ・ソースでURL、ユーザー名およびパスワードが指定されているものとします。 


    httpDownloadタグ

    このタグは、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" ] />
    


    注意

    • httpDownloadタグは、必要に応じてボディを使用できます。たとえば、ボディがユーザー・プロンプトで構成されている場合があります。

    • ファイル・システムからのダウンロードでは、ベース・ディレクトリは、タグ・ハンドラによってJSPページ・コンテキストから自動的に取得できます。

     

    属性

    次に、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>
    


    注意

    この例のdbOpenタグの場合は、データ・ソースでURI、ユーザー名およびパスワードが指定されているものとします。 


    メールJavaBeanとメール・タグ

    多くの場合、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とメール・タグについての一般的な考慮事項

    メールJavaBean(SendMailBean)またはメール・タグ(sendMail)を使用するときは、次の点に注意してください。

    メール添付

    メール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
    

    複数設定するとエラーになります。


    注意

    sendmail.propertiesファイルが存在しない場合は、sendmail.propertiesnoneに設定された場合と同様に処理されます。この場合、メール添付は無効化されます。 


    添付の送信

    メール・タグでサーバー・サイド添付が有効化されている場合、1つ以上のサーバー・サイド・ファイルをメッセージに添付するには、serverAttachmentタグ属性を使用します。クライアント・サイド添付が有効化されている場合、クライアント・サイド・ファイル(最大1ファイル)をメッセージに添付するには、clientAttachmentタグ属性を使用します。「sendMailタグの説明」を参照してください。1つのアプリケーションでサポートできるのは、2つの添付モードのいずれか1つです。両方はサポートできません。

    サーバー添付モードとクライアント添付モードの両方のメールBeanには、添付ファイルの名前を指定または取得するメソッドが含まれています。setServerAttachment()getServerAttachment()setClientAttachment()およびgetClientAttachment()の詳細は、「SendMailBeanメソッドの説明」を参照してください。

    メール・タグまたはメールBeanでは、サーバー・サイド・ファイルのリストは、カンマ区切りまたはセミコロン区切りで指定できます。ただし、スペース区切りは、ファイル名にスペースが許可されているオペレーティング・システムの場合でも使用できません。

    添付の使用方法

    メール添付に関する次の使用方法は、メール・タグとメールBeanの両方に適用されます。

    SendMailBeanの説明

    OC4Jが提供するoracle.jsp.webutil.email.SendMailBean JavaBeanは、サーブレットからJSPアプリケーションまでの電子メール機能をサポートします。これをJSPページで使用するには、標準のjsp:useBeanタグを使用してインスタンス化できます。(ただし、JSPアプリケーションの場合は、通常、SendMailBeanではなくsendMailタグを使用します。
    「sendMailタグの説明」を参照してください。)

    SendMailBeanの要件

    SendMailBeanを使用するには、ojsputil.jarmail.jarおよびactivation.jarの各ファイルがインストール済で、クラスパスに存在していることを確認します。これらのファイルは、OC4Jに含まれています。

    SendMailBeanをコードで使用する場合は、次の内容を指定する必要があります。

    その他のSendMailBeanの属性は、すべてオプションです。

    SendMailBeanメソッドの説明

    この項では、メール・メッセージの送信、メール・セッションのクローズおよびBean属性の設定と取得に使用するSendMailBeanのメソッドを示し、内容を説明します。


    注意

    JavaBeanの仕様に準拠して、SendMailBeanには、引数なしのコンストラクタがあります。 


    次に、SendMailBeanのパブリック・メソッドを示します。

    sendMailタグの説明

    JSP開発者が便利なように、OC4Jには、JSPページに電子メール機能を設定するsendMailタグが用意されています。次の各項では各タグについて説明します。

    sendMailタグを使用する場合は、次の要件に注意してください。

    taglibディレクティブ、予約済のタグ・ライブラリ・ディレクトリ、TLDファイルおよびuri値の内容の詳細は、『Oracle Containers for J2EE JavaServer Pages開発者ガイド』を参照してください。

    sendMailタグ構文

    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タグの使用方法

    sendMailタグを使用する場合は、次の点に注意してください。

    sendMailタグ属性の説明

    sendMailタグは、次の属性をサポートします。

    sendMailタグに関するサンプル・アプリケーション

    次に、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>
    

  • 戻る 次へ
    Oracle
    Copyright © 2002, 2006 Oracle Corporation.

    All Rights Reserved.
    目次
    目次
    索引
    索引