- ベストアンサー
sendRedirectを利用したシステムにファイル出力機能を追加する方法
- 現在、sendRedirectを用いてページ移動を行っているシステムに、ファイルダウンロード機能を追加したいと考えています。
- 現在のシステムはJRE1.4.2_01とTomcat 4.1を使用しています。
- 出力処理を行うとjava.lang.IllegalStateExceptionが発生してしまう問題があります。解決方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 言葉足らずですみません。 >JavaScriptなどを使ってクライアント側でダウンロードとページ遷移を同時に行うように作って下さい。 は、「JavaScriptを利用して、ダウンロードページを別ウィンドウで開きつつ、現在のページを遷移させてはどうですか?」という意味で書きました。 「ダウンロード後にページ移動」が必須条件であるならば無理ですが、必須でないならばこの方法でも良いと思います。 ボタンクリック→ダウンロードページを別ウィンドウでオープン→ページを移動 ↓ ファイルダウンロード(別ウィンドウ)
その他の回答 (1)
- Bonjin
- ベストアンサー率43% (418/971)
まず、HTTPは1リクエスト・1レスポンスが基本なので >ファイルダウンロード→ページ移動 はできません。 実現するならJavaScriptなどを使ってクライアント側でダウンロードとページ遷移を同時に行うように作って下さい。 >私Javaでの開発経験がございません。職場にもJava熟練者が居りません。 Javaの前にHTTPなどWebに関する知識が不足していませんか? Javaを使いこなせた所でWebシステムは作れませんので、まずはそちらの方をどうにかした方が良いと思います。
補足
Bonjinさん、ご返答ありがとうございます。 こちらの返答が遅くなり申し訳ございません。 >HTTPなどWebに関する知識が不足していませんか 返す言葉がございません。その通りです。 もう少し確認させてください。 ダウンロードページからの遷移をJavaScriptで行うようにとのことですが、OutputStreamを利用してファイル送信した時点でcommitが行われるのでは無かったでしょうか? それだとまた別のページへsendRedirectする際にIllegalStateExceptionが発生しそうですが… 当初の予定 ファイルダウンロード→ページAへ遷移(sendRedirect) Bonjinさんの案 ファイルダウンロード→ページAへ遷移(JavaScript)→ページBへ遷移(sendRedirect)
お礼
ご返答遅くなりました。 無事実装することが出来ましたので報告とお礼を致します。 本当にありがとうございました。