Apcoordinator ユーザーズガイド
目次 前ページ次ページ

第3部 Webアプリケーションの開発> 第16章 APIを使ったプログラミング> 16.2 バイナリファイルの送受信

16.2.2 ファイルをダウンロードする

ファイルをダウンロードする場合には、JSPと出力ストリームが競合するため、JSPは使用できません。そのため、サーブレットを作成して、サーブレットからダウンロードするようにします。
サーブレットは、UjiServletを継承して作成します。 メソッドを作成する必要はありませんが、クラスローダがアプリケーションのJavaクラスをロード可能にするために、アプリケーションの中にサーブレットクラスを持つ必要があります。

package updown;

public class DownloadServlet extends com.fujitsu.uji.http.UjiServlet {
    public DownloadServlet() {
    }
}
ダウンロードのための入力フォームでは、action="download"を追加します。ここで指定したdownloadはサーブレットの識別名で、任意に指定可能です。例ではダウンロードファイル名を固定にして隠し項目で作成しています。 データBean updown.DownloadParamの作成については、一般的なWebcoordinatorアプリケーションと同じなので省略します。

<FORM action="download">
    <INPUT name="uji.verbs" type="hidden" value="download"> 
    <INPUT name="uji.bean" type="hidden" value="updown.DownloadParam"> 
    <INPUT name="file" type="hidden" value="downloadfilename">
    <INPUT name="download" type="submit" value="ダウンロード"> 
</FORM>
ビジネスクラスでは、復帰値をvoidに代えてObjectとします。ダウンロードするファイルをFileクラスで返します。 復帰値がFile、InputStream、MimeSourceの場合は、ファイルとみなしてダウンロードを開始します。 復帰値がStringの場合は、エラー等を表示するための画面のJSPファイル名とみなします。ビジネスクラスでsetResponseBean等の処理をしてuji:includeなどを記述した(uji:dispatchは書けません)JSPファイルを返すと、Webcoordinatorのアプリケーションに戻すことができます。

....
    //
    public Object download(DispatchContext context, DownloadParam dataBean) {
        name = "c:\\downloadarea\\" + dataBean.getFile();
        return new File(name);
    }
コマンドマップは一般的なWebcoordinatorアプリケーションと共用になります。
updown.DownloadParam;download=updown.UploadHandler.download
サーバに配置する場合はweb.xmlを編集し、サーブレットマッピングを定義します。web.xmlの詳細については、Webアプリケーション環境定義ファイル(web.xml)で説明します。 以下はdownloadというサーブレットを定義するため、servlet、servlet-mappingを追加しています。

<web-app>
  <servlet>
    <servlet-name>download</servlet-name>
    <servlet-class>updown.DownloadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>download</servlet-name>
    <url-pattern>/download</url-pattern>
  </servlet-mapping>
</web-app>

目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2000-2005