2017-01-19 24 views
1

サーブレットの応答サイズを監視したいので、この機能を実装するフィルタを追加する予定です。HttpServletResponseの合計サイズを取得する方法

しかし、私はHttpServletResponse方法を確認したときに応答サイズを取得する方法がわからない:

response.getWriter() 
response.getOutputStream() 

は合計応答サイズを計算するための任意の効率的な方法はありますか?

答えて

0

レスポンスヘッダーにアクセスできる場合は、Content-Lengthを読むことができます。例えば、

(Status-Line):HTTP/1.1 200 OK 
Connection:Keep-Alive 
Date:Fri, 10 Mar 2015 14:00:00 GMT 
Content-Length:728 
+0

お返事ありがとうございます。私はちょうどいくつかのデバッグを行い、3つのヘッダーしか取得できません。コンテンツタイプ|転送エンコーディング|日付。 HttpServletResponseでContent-Lengthが見つかりません。 – Bensson

+0

@Bensson:サーブレットもフィルターもフィールドを追加していない場合、それは応答に存在することはできません。 –

+0

@ SergeBallestaあなたが言ったのと同じですが、コンテンツ長は実際のサイズで自動更新されませんでした。 – Bensson

1

あなたがgetWritergetOutputStreamをオーバーライドしますHttpServletResponseWrapperでサーブレットを提供するために、フィルターを使用することができます。両方のメソッドは、そこに書き込まれた文字を数える実際のストリームにラッパーを返します。

+0

総額を得るには高価すぎるかもしれません。 – Bensson

1

あなたはこのような基本的なHTTPのものの監視を自分で行う必要はありません、Tomcatはあなたのためにそれを行います。

あなたが%b変数によって与えられた応答の大きさを持っているあなたのserver.xmlと出来上がりにAccessLogValveを追加アクセスログ。

+0

Thx、実際には私はこれをユーザーごとに制御したいので、フィルタでこれを処理します。それはAccessLogValveでこれを行うことは本当に難しいです。 – Bensson

0

JavaEE APIを使用してHttpServletRequestの合計サイズを取得する方法はありません。

関連する問題