• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ServletOutputStreamについて)

ServletOutputStreamについて

Harry_の回答

  • ベストアンサー
  • Harry_
  • ベストアンサー率55% (36/65)
回答No.1

JSP だと、スクリプトレット以外の部分が、 空白行なども含めて、自動的に out.print() に変換されてしまっているんじゃないですか。 work ディレクトリ(TOMCATの場合)などにある、 JSP から自動生成されたサーブレットのコードなどを 確認してみてはどうでしょう。 もしそうなら、JSP ではなくサーブレットで 実装すべきです。 もうひとつ、PDFファイルはテキストとして開いても、 そこそこ読めるので、ダウンロードしたファイルが 元のファイルとどう異なるかを比較するのもよいかと 思います。

michikusa
質問者

お礼

返事が遅れまして、すいません。   質問の内容がまずかったです。 実装しているのはサーブレットです。   で、この問題ですが、close()とflush()がどうもまずいようでした。 実は、このクローズした後に、まだサーブレットの処理が続いているため、イリーガルエクセプションが発生し、ファイルが壊れてしまったようです。   とりあえず、対処としてはデータをリクエストにセットして、ディスパッチのサーブレットで、改めてストリームでダウンロードするようにしました。  

関連するQ&A

  • サーブレットでのファイルダウンロードについて

    サーブレットでファイルのダウンロードを 行うプログラムを作成しているのですが ときどきダウンロードするファイルが切れている 場合があります。 なので実際のファイルとダウンロード時のファイル の違いがあった場合はJSPでalert表示を行いたい のですが、うまく実行できません。 処理としては response.setHeader(......) response.setContentType(......) 等の設定を行い ダウンロードするファイルのInputStream を作成、OutputStreamにgetOutputStream() を取得してwriteしています。 上記のwriteする時に件数をカウントして このサーブレットの呼び元のjspに返却したい のですが、取得ができません。 何か参考になるサイトなどないでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java
  • 静的ページからのサーブレット起動について

    今、JSPとサーブレットの勉強を行っております。 サーブレット側でデータを取得して JSP側で表示を行いたいと思っているのですが フォームアクション等を行わずに、JSP⇒サーブレット⇒JSPと 実施する事は可能でしょうか? URLアクセス ⇒ JSPからサーブレットの処理を呼び出し ⇒ サーブレットから クラスを利用してデータを取得 ⇒ JSPへデータを渡して表示   というように、URLアクセスのみで一連の処理を行いたいです。 サーブレットからJSPにセッション経由でデータを渡して表示する事や JSPからクラスを利用する方法では成功していますが できるだけMVCモデルに準拠した方法で行いたく思っており かつ、コントローラとしてサーブレットを使ってみたくて このような事に挑戦しております。 可能かどうかだけでもわかると非常に有難いですので ご存知の方、どうかよろしくお願い致します。

    • ベストアンサー
    • Java
  • ServletからXMLを読み込む方法

    こんにちわ。 JSPからGETで受け取ったデータと、ローカルXMLファイルのデータの画面表示をサーブレットを使って行いたいと思っています。 このとき、XMLファイルからのデータ取得方法が分かりません。 普通のJavaであればDOMとしてXMLを操作したことがあるのですが、サーブレットの場合、違ってくるのでしょうか。 簡単な例等を教えていただけると嬉しいです。 お手数ですが、お分かりになる方、どうぞご教授くださいませ。

  • サーブレットで

    こんにちは サーブレットで入力しセッションに追加 それをJSPの別画面で表示したいと考えています。 セッションに追加後 JSPでセッションの値をEnumerationで取得→表示 はできるのですが サーブレットで追記されていってもJSPはブラウザで更新してあげないと表示されない状態です 追記されていくたびに JSPのファイルも更新されていくにはどのような方法があるのでしょうか アドバイスお願いします

    • ベストアンサー
    • Java
  • 配列をセッションに割り当てた後で

    javaBeanでDBにアクセスして、取得した値を配列に格納します。その配列をサーブレット側でgetメソッド使って取得し、セッションに割り当てます。その後、JSP側でセッションを通して配列の各要素を取り出し表示させたいのですが<%= session.getAttribute("Date") %>←(Dateが配列)では配列の各要素ではなく配列そのものが取り出されるのか、 [Ljava.lang.String;@737371 のような文字が表示されてしまいます。 セッションで割り当てられた配列の各要素の値の取得のやり方がわかる方どうかご教授お願いします。

    • ベストアンサー
    • Java
  • サーバー上のフォルダ情報の取得

    サーバー上の特定のフォルダ内にある全ファイル名を取得するサーブレット(JSP、アプレット、javaScript)を作成したいのですが、ファイル名を取得する方法がわかりません。 こういった機能をサポートしているクラス(パッケージ)があれば教えてください。

  • テキストBOXから取得した文字コードの扱いについて

    JSPで記述したページのテキストBOXに入力されたSJIS形式の日本語文字データをサーブレットに送信してそれを取得して、文字のエンコードを行う際に気がついたのですが String text = request.getParameter("text"); byte[] bytes =text.getBytes("ISO8859_1"); text=new String(bytes, "SJIS"); のようにすればサーブレットで扱う時に正しく日本語表示できるのですが String text = request.getParameter("text"); byte[] bytes =text.getBytes("SJIS"); text=new String(bytes, "SJIS"); とすると正しく表示されません。 text.getBytes("SJIS");で取得格納されるbyteのデータに違いがあるようです。この場合取得されるbyteの配列は3つになっています。 ISO8859_1で取得するとbyte配列は2つになっています。このISO8859_1のbyte配列のデータと同じ中身のものを単にString(byteデータ,文字コード)のコンストラクタに入れるとSJISの文字コードで正しく変換出来ています。 要するにもともとSJISの文字データをgetByte("SJIS")で変換したものがなんで、もとに戻せないのかということです。また、違う文字コードのISO8859_1ではSJISに対応したbyteの配列になるのかということです。 ひどい乱文ですみませんが、よろしくお願いします。

  • JAVAのエラー

    サーブレットでJSPファイルでデータを表示するんですがエラーもなく起動しますがブラウザでxxxxxxファイルのダウンロードとなってしまいます。 どこがエラーかわかりません。

  • JSP URLに表示される拡張子 .jsp

    Servlet、JSPの開発を行っているのですが・・・ ページを表示する際のアドレスに「http://hogehoge/test.jsp」とJSPの拡張子が表示されると思うんですが、この拡張子を表示させずにアクセスする方法はあるでしょうか? サーバー:Apache 2.2.3 Tomcat:Apache Tomcat 5 OS:CentOS 5 自分で考えた方法 ・ApacheのProxy設定でJSPファイル一つずつ設定していく ・JSPファイルへのアクセスに対してもサーブレットを介して、dispacher.forward(request, response)を使う。 ※forwardだったらサーブレットのアドレスのままになったので。 どちらも結構面倒なんですが・・・他に方法はあるでしょうか?

    • ベストアンサー
    • Java
  • サーブレットとJSPの連携

    サーブレットで定義された文字列をJSPに渡して表示させるようにしたいのですが、 サーブレットからJSPへのデータの渡し方がよくわかりません。 参考書やWEBカンファレンスなどのサンプルを見るとすべてサーブレット、Beans、JSPの連携ばかりです。 そもそもサーブレットとJSPだけのWEBアプリケーションは作れないのでしょうか? もしくは、Beansを使用したほうが何かと効率がいいからなのでしょうか? どなたか是非教えてください。

    • ベストアンサー
    • Java