HttpServletResponseインターフェース
コンテンツタイプの設定(setContentType)
種類 |
拡張子 |
Content-Type |
HTMLファイル |
html, htm |
text/html |
テキストファイル |
txt |
text/plain |
GIF |
gif |
image/gif |
PNG |
png |
image/png |
Windows 実行ファイル |
exe |
application/octet-stream |
response.setContentType("text/html");
※文字コードを指定する場合
response.setContentType("text/html;charset=Shift_JIS");
文字コードを設定しなかった場合には次のページで説明する通りデータ本文が「ISO-8859-1(Latin1)」でエンコードされます。その為、日本語を扱うデータの場合は文字化けしてしまいますので注意して下さい。
- 文字セットの指定(setCharacterEncodingメソッド)
response.setContentType("text/html");
response.setCharacterEncoding("Shift_JIS");
上記は、「response.setContentType("text/html;charset=Shift_JIS");」と同じ
文字出力用のストリームの取得(getWriter)
出力ストリームを取得するには「HttpServletResponse」インターフェースの親インターフェースである「ServletResponse」インタフェースで定義されている「getWriter」メソッドを使用する。
response.setContentType("text/html");
PrintWriter out = response.getWriter();
「PrintWriter」クラスのオブジェクトは、文字を出力する時にコンテンツタイプに設定されている文字セットを使ってエンコーディングします。そのため「getWriter」メソッドを実行する前に「setContentType」メソッド又は「setCharacterEncoding」メソッドで文字コードを設定しておく必要がある。
PrintWriterクラス
メソッド |
説明 |
void println(boolean x) |
boolean 値を出力して、行を終了します。 |
void println(char x) |
文字を出力して、行を終了します。 |
void println(char[] x) |
文字の配列を出力して、行を終了します。 |
void println(double x) |
倍精度の浮動小数点数を出力して、行を改行します。 |
void println(float x) |
浮動小数点数を出力して、行を改行します。 |
void println(int x) |
整数を出力して、行を終了します。 |
void println(long x) |
long 整数を出力して、行を終了します。 |
void println(Object x) |
Object を出力して、行を終了します。 |
void println(String x) |
String を出力して、行を終了します。 |
void println() |
改行文字列を書き込むことによって、現在の行を改行します。 |
void close() |
ストリームを閉じます。 |
void flush() |
ストリームをフラッシュします。 |
response.setContentType("text/html; charset=Shift_JIS");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
:
out.println("</html>");
out.close();
ステータスコードの設定(setStatus)
ステータスコードを設定するには「HttpServletResponse」インターフェースで定義されている「setStatus」メソッドを使います。
コード |
定数 |
200 |
SC_OK |
204 |
SC_NO_CONTENT |
301 |
SC_MOVED_PERMANENTLY |
302 |
SC_MOVED_TEMPORARILY |
403 |
SC_FORBIDDEN |
404 |
SC_NOT_FOUND |
500 |
SC_INTERNAL_SERVER_ERROR |
503 |
SC_SERVICE_UNAVAILABLE |
ステータスコードは他にも数多く用意されています。200番台は「成功」、300番台は「転送」、400番台は「クライアント側のエラー」、500番台は「サーバ側のエラー」を表します。「setStatus」メソッドは200番台又は300番台のステータスコードを設定する時に利用します。
「setStatus」メソッドを使ってスタータスコードの設定を行った場合、画面に表示する内容は別途作成する必要があります。
エラー系のスタータスコードの設定
エラー系の400番台及び500番台のステータスコードを設定する場合には「HttpServletResponse」インターフェースで定義されている「sendError」メソッドを使います。
「sendError」メソッドを使う場合にはスタータスコードの設定を行うと同時に画面に表示される内容を自動で作成します。その為、一般的なエラー表示が画面に行われます。
もし独自のメッセージを画面に表示したい場合には引数の異なる「sendError」メッセージが用意されています。
URL |
http://localhost:8080/sample/formsample5.html |
アプリケーション配置場所 |
c:\servlet-sample\sample\ |
web.xmlファイル |
c:\servlet-sample\sample\WEB-INF\web.xml |
コンテキストファイル |
C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\sample.xml |
ヘッダーの設定(setHeader)
ヘッダーを設定するには「HttpServletResponse」インターフェースで定義されている「setHeader」メソッドを使用する。
こちらを参照
URL |
http://localhost:8080/sample/ResponseSample4 |
アプリケーション配置場所 |
c:\servlet-sample\sample\ |
web.xmlファイル |
c:\servlet-sample\sample\WEB-INF\web.xml |
コンテキストファイル |
C:\Program Files\Apache Software Foundation\Tomcat 5.5\conf\Catalina\localhost\sample.xml |
リダイレクトの設定(sendRedirect)
ステータスコードとLocationヘッダーの設定によってURLを転送させる事が出来ますが、リダイレクト用のメソッドが別途用意されているのでそれを利用することでも他のページへ転送させる事が出来ます。
リダイレクトを設定するには「HttpServletResponse」インターフェースで定義されている「sendRedirect」メソッドを使用する。
最終更新:2009年02月22日 13:19