Java HttpResponseの詳細

1892 ワード

HttpServiceletクラスには、2つのパラメータHttpRequestとHttpResponseが必要です.例えばdoGetメソッド
protected void doGet(
    HttpServletRequest request,
    HttpServletResponse response)
      throws ServletException, IOException {
}

ここでまずHttpResponseを紹介します.HttpResponseオブジェクトの目的は、ブラウザがWebアプリケーションに送信するHTTP要求に応答して、Webアプリケーションがブラウザに返信するHTTP応答を示すことである.
HttpResponseオブジェクトにはいろいろな方法がありますが、ここで最もよく使われる方法を紹介します.他の方法に興味があればJavaDocで読むことができます.
Writing HTML
PrintWriterを取得してHttpResponseオブジェクトからhtmlをブラウザに送信できます.これは例です.
PrintWriter writer = response.getWriter();

writer.write("GET/POST response");

Headers
HttpRequestオブジェクトはリクエストヘッダを取得することができ、HttpResponseはこれらのパラメータを設定する必要があります.例:
response.setHeader("Header-Name", "Header Value");

Content-Type
このリクエストヘッダは、ブラウザの説明に応答して送信されるコンテンツタイプである.例えば、HTMLのコンテンツタイプはtext/htmlです.例:
response.setHeader("Content-Type", "text/html");

テキストを書く
HTMLではなくテキストバックブラウザを作成できます.
response.setHeader("Content-Type", "text/plain");

PrintWriter writer = response.getWriter();
writer.write("This is just plain text");

Content-Length
Content-Longthはブラウザに応答情報が何バイトであるかを教えます
response.setHeader("Content-Length", "31642");

バイナリデータの書き込み
ブラウザにバイナリデータを書くこともできます.例えば、画像やpdfファイルなどを送信することができます.これならcontentTypeはimage/pngのはずです.バイナリデータを送信するためにresponseからgtWriter()メソッドでは、textタイプを送信するだけなので、Writerが取得されます.出力ストリームでresponseからgetoutputStream()メソッドで出力ストリームを取得します.例:
OutputStream outputStream = response.getOutputStream();

outputStream.write(...);

URLリダイレクト
servletからブラウザに異なるURLをリダイレクトすることができ、リダイレクト時にデータを送信することはできません.例:
response.sendRedirect("http://www.baidu.com");