ServletResponseインタフェースではHTTPといったプロトコルに依存しないメソッドが定義されていました。 HttpServletResponseインタフェースではHTTPプロトコルに特化した setHeader、addHeader、sendRedirectメソッドなどが定義されています。
HttpServletResponseインタフェースの主なメソッド
| メソッド |
動作 |
void setHeader (String name, String value) |
ServletResponseオブジェクトのヘッダーへ名前と値を設定する。 |
void addCookie (Cookie cookie) |
Cookieを追加する。 |
void addHeader (String name, String value) |
ヘッダーへ名前と値を追加する。 |
| setStatus |
HTTPステータスを設定する。 |
| sendRedirect |
別のページへリダイレクトする。 |
|
setHeaderメソッド
setHeaderメソッドは指定された名前と値を持つ応答ヘッダを追加します。指定したヘッダが設定されていた場合は、この値によって以前の値を上書きします。
[ソース]
package com.sitecooler.servlet;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SampleSetHeader extends HttpServlet {
protected void doGet(
HttpServletRequest req,
HttpServletResponse res)
throws ServletException, java.io.IOException {
res.setContentType("text/html;charset=Windows-31J");
res.setHeader("progma","no-cache");
PrintWriter out = res.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hello World</title>");
out.println("</head>");
out.println("<body>");
out.println("Hello World");
out.println("</body>");
out.println("</html>");
}
}
[実行例]
sendRedirectメソッド
sendRedirectメソッドを使用すると、引数で指定した別のページへリダイレクトすることが出来ます。ただし、レスポンスヘッダーを送信した後にこのメソッドを呼び出すと IllegalStateExceptionをスローします。
ただしこのメソッドはサーバ側だけで処理が完結するわけではなく、ブラウザに対し別のURLからリソースを取得するようメッセージを送信し、ブラウザはこのメッセージに応じて指定されたりソースを取得しに行きます。
[ソース]
package com.sitecooler.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class SampleSendRedirect extends HttpServlet {
protected void doGet(
HttpServletRequest req,
HttpServletResponse res)
throws ServletException, java.io.IOException {
res.sendRedirect("http://www.yahoo.co.jp/");
}
}
[実行例]