2008年11月26日水曜日

Strutsでダウンロード

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

これは個人的な見解なのですが
よく、以下のようなAction上での記述が見受けられます。
  1. //ダウンロード用のコンテンツタイプ設定   
  2. response.setContentType("application/octet-stream");   
  3. //ファイル名の設定(ヘッダ情報)   
  4. response.setHeader("Content-Disposition","attachment; filename=testcsv");   
  5. //各データの取得   
  6. OutputStream os        = response.getOutputStream();   
  7. OutputStreamWriter osw = new OutputStreamWriter(os, encode);   
  8. BufferedWriter writer  = new BufferedWriter(osw);   

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

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

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

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

0 件のコメント: