K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>>すごく基本的な質問かもしれないですが、たとえば「メモリ上にだけ持っていて >>ディスクに書き出していないデータがあるかもしれないのでflush」という >>イメージは分かるのですが、このサンプルの場合はメモリ上のデータの >>やり取りだけなので、flushを何のために行っているのか分かりませんでした。 > >このサンプルの場合はメモリ上のデータのやり取りだけですが、 >それは、Henacatが手抜きのためにレスポンスボディをいったんすべて >メモリに乗せているからであり、これでは、巨大なレスポンスを返す際には >メモリが無駄になります。場合によっては、レスポンスデータを作りながら >どんどんクライアントに返してしまいたいケースもあるでしょう。 >その場合、クライアントへのデータの返却を始めてしまったら、 >もうレスポンスヘッダの変更はできませんから、途中でエラーが起きても >ステータスとして500とかを返すことはできず、200 OKを返すことになって >しまいますが、それでもいいからクライアントへのデータ返却を始めてしまいたい、 >というニーズはあり得ます。それに対応するために、サーブレットAPIでは >「コミット」という概念を導入しています(p.119)。 >http://mergedoc.osdn.jp/tomcat-servletapi-5-ja/javax/servlet/ServletResponse.html#getWriter() > >その場合、HttpServletResponseのgetWriter()で得られるPrintWriterは、 >バッファリングする方がよいでしょう。相手はネットワークだからです。 >このように、このPrintWriterはバッファリングする(ようになる)可能性もあるため、 >ここではflush()しています。 >いずれにしても、バッファリングするしないはPrintWriterの実装詳細に >属することでしょうから、flush()する方が堅実なコーディングではないかと >思います。
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!