2007年10月17日水曜日

HttpServletResponse

HttpServletResponse インターフェースは ServletResponse インターフェースを継承しています。

出力用 PrintWriter オブジェクトの取得
javax.servlet.ServletResponse のメソッド
PrintWriter getWriter()

文字エンコーディング
javax.servlet.ServletResponse のメソッド
void setCharacterEncoding(String charset)
    getWriter より前に呼び出す
    レスポンスがコミットされる前に呼び出す。
void setContentType(String type)
    getWriter より前に呼び出す
    レスポンスがコミットされる前に呼び出す。

リダイレクト
void sendRedirect(String location)
/ で始まるコンテナルートを基準とするパスを location に設定するか、相対パスを設定する。
(例)/SCWCD/Sample1
(例)Sample1
sendRedirect メソッドは一旦レスポンスをクライアントに返してから location へリダイレクトする。
リクエスト属性を利用できない。
他のドメインにリダイレクトするには http://..... というように location を設定する。

URL 書き換え
String encodeUrl(String url)
String encodeRedirectURL(String url)
Cookie をサポートしてないブラウザのセッションを構成するには URL 書き換えが使われる。
sendRedirect メソッドへ送られる URL はこのメソッドを利用する。

<サンプル>
import java.io.*;

import javax.servlet.ServletException;
import javax.servlet.http.*;

public class Sample3 extends HttpServlet {
    public void doPost(HttpServletRequest req, HttpServletResponse res)
    throws ServletException, IOException {
        if (req.getParameter("message").equals("")) {
            res.sendRedirect("/SCWCD/index.html");
        } else {
            PrintWriter out = res.getWriter();
            out.println("<html><body>");
            out.println(req.getParameter("message"));
            out.println("</body></html>");
        }
    }
}

index.html
...
<form action="/SCWCD/Sample3" method="post">
<input type="text" name="message" size="30" maxlength="15" /><br />
<input type="submit" value="送信"/>
</form>
...

<出力結果>
入力した文字が出力される。文字を入力しないとリダイレクトされる。

0 件のコメント: