2008年11月26日水曜日

Strutsでダウンロード

ファイルのダウンロードを方法を記述する。

これは個人的な見解なのですが
よく、以下のようなAction上での記述が見受けられます。

//ダウンロード用のコンテンツタイプ設定
response.setContentType("application/octet-stream");
//ファイル名の設定(ヘッダ情報)
response.setHeader("Content-Disposition","attachment; filename=testcsv");
//各データの取得
OutputStream os        = response.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os, encode);
BufferedWriter writer  = new BufferedWriter(osw);

しかし、どうでしょうか。。。
例えば、writerに直接書き込んでるビジネスロジックの途中で、
Exceptionが起こると考えた場合、responseを記述している為、
Struts上の動作に戻ることが不可能ではないですか。。。

Strutsにおいて通常Viewで出力を行なう事を考えれば、
これはこれでおかしいのではないでしょうか?

ファイルがコピーレベルのデータだとしても、
JSP側でダウンロードを行なうのが筋のような気がしないでもないですね。
※処理最終でWriterに記述すれば障害の可能性が低くなることはわかっています。

それではJSPでダウンロードする感じを記述してみましょう!!

0 件のコメント: