0

Java サーブレットに関していくつか質問があります。

1) ブラウザが初めてサーブレットをリクエストしたときはどうなりますか?

2) response.setContentType(text,html) はブラウザに送信される最初の命令ですか?

ウェブで答えを探していますが、よくわかりません。

ありがとう

4

2 に答える 2

3

いいえ、最初に送信するのはHTTPバージョンです:)

   HTTP/1.1 200 OK
   Date: Thu, 17 Jan 2013 21:31:11 GMT
   Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
   Last-Modified: Wed, 01 Jan 2013 21:11:25 GMT
   Content-Type: text/html; charset=UTF-8   

   <HTML>website contents
   here</HTML>

コンテンツの前の最後の行は、あなたが話しているコンテンツタイプです。これらのヘッダーは異なる順序で発生する可能性があり、通常はさらに多くなります。それらの順序は厳密には定義されていません。おそらく、コンテンツタイプは日付より前に発生します。ただし、HTTPバージョン番号と応答コード(私の例では200-OK)が常に最初に来ます。HTTPフィールドの詳細については、こちらをご覧ください。

于 2013-01-17T16:03:40.263 に答える
1

あなたの質問2)に関して:

サーブレットは実際にはブラウザーに「指示」を送信するのではなく、何らかの方法で応答を構築します。すぐにヘッダーを送信するか、内部バッファーをいっぱいにするときに初めて応答の本文を書き込もうとしたときにヘッダーを送信するか、または応答全体をすべてバッファーする場合があります (ただし、おそらくそうではありません)。完了するまで。ヘッダーが送信されたという用語は、応答が「コミットされた」という意味であり、特定の応答に対してこれが発生したかどうかを判断することはできますが、API からの発生を実際に防ぐことはできません。(Jetty 6 の実装を調べて何が起こるかを調べてみましたが、コードは単純ではありません。これは、コンテナーの実装にある程度の余裕があることを示しているようです。)

また、サーブレットが初めて要求されたときに、サーブレットはおそらくコンテナーによってインスタンス化されます。<load-on-startup>1</load-on-startup>( を設定したために以前にインスタンス化されていた場合をweb.xml除き、またはおそらくコンテナーがそうすることを選択したため、実装がそれを許可されているかどうかはわかりません。)

于 2013-01-17T16:42:19.280 に答える