Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > Servlet・JSP > Servlet −3.クライアントへのデータ返信
更新日:2006/10/15
Servlet−3.クライアントへのデータ返信
このページでは、Servletプログラムからクライアントへデータを返信する方法、指定したページにリダイレクトする方法について解説します。それぞれのプログラムはHttpServletResponseインタフェースを使用します。
データの返信
ここでは、クライアントへデータを返信する方法について解説します。HttpServletResponseインタフェースにはこれらのデータを返信するためのメソッドが用意されています。Servletプログラムが通常オーバーライドするdoXxxメソッドの引数にはHttpServletResponseインタフェースのオブジェクトが定義されています。このオブジェクトを通じでクライアントへデータを返信します。
【HttpServletResponseで定義されているデータ返信関連のメソッド】
戻り型
メソッド
説明
PrintWriter
getWriter( )
クライアントにテキストデータを返信するためのPrintWriterオブジェクトを生成します。
ServletOutputStream
getOutputStream( )
クライアントにバイナリデータを返信するためのServletOutputStreamオブジェクトを生成します。
void setContentType(String) クライアントへデータを返信する際のデータタイプを指定します。指定しない場合はHTMLファイル(text/html)になります。その他、image/jpeg, application/javaなどがあります。データを返信する処理の前に指定します。
void addHeader(String, String) 第一引数にヘッダー名、第二引数にヘッダー値を指定し、ヘッダーデータを返信します。ヘッダー値がすでに設定されている場合は、既存のヘッダー値に追加されます。
void
setHeader(String, String)
第一引数にヘッダー名、第二引数にヘッダー値を指定し、ヘッダーデータを返信します。ヘッダー値がすでに設定されている場合は、既存のヘッダー値を上書きします。
boolean containsHeader(String) 引数に指定されたヘッダーがすでに設定されているかどうかを調べます。
void sendError(int) 引数に指定されたHTTPプロトコルのエラーステータスコードをクライアントに返します。
void setStatus(int) エラーではないときに、クライアントに返すスタータスコードを指定します。エラーの時は、sendErrorメソッドが使用されます。
クライアントへ、テキストデータを返信する(ブラウザにテキストデータを表示する)プログラムを例示します。
【ResponseServ.java】
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class ResponseServ extends HttpServlet {
  public void doGet(HttpServletRequest req, HttpServletResponse res)
              throws ServletException, IOException {
    //(1)ContentTypeの指定
    res.setContentType("text/html; charset=Windows-31J");

    //(2)PrintWriterオブジェクトの生成
    PrintWriter out = res.getWriter();
    //(3)テキストデータの返信
    out.println("<HTML>");
    out.println("<BODY>");
    out.println("Hello! Javaの道");
    out.println("</BODY>");
    out.println("</HTML>");
    out.flush();  //(4)データ返信の終了
  }
}
(1). setContentTypeメソッドで返信するデータの種類を指定します。ここでは、HTMLファイルを返すため、"text/html; charset=Windows-31J"を指定します。
(2). テキストデータを返信するためにgetWriterメソッドで、PrintWriterオブジェクトを生成します。
(3). PrintWriterオブジェクトのprintlnメソッドでテキストデータをクライアントへ返信します。
(4). テキストデータの返信後、PrintWriterオブジェクトのflushメソッドを実行します。
【実行結果】Servletプログラムの実行方法に関しては、Javaの道:Tomcat(プログラム配置・実行)を参照してください。
Javaの道_HttpServletResponse_1
リダイレクト
ここでは、sendRedirectメソッドを利用して、他のページへリダイレクトする方法を解説します。よくforwardメソッドと混同されますが、sendRedirectメソッドとforwardメソッドは明確に異なります。
sendRedirectメソッドは、一旦クライアントへ転送先の情報を返し、クライアントから転送を行います。転送先のHTTPセッションは、転送元のセッションとは異なるセッションで行われます。
forwardメソッドは、サーバ内で転送を行います(HTTPセッションは同一)。転送元と転送先でデータを引き継ぎたいときにforwardメソッドを使用します。
【HttpServletResponseで定義されているsendRedirectメソッド】
戻り型
メソッド
説明
void sendRedirect(String) 引数に指定されたURLへのリダイレクトを行います。
Javaの道のトップページへリダイレクトするプログラムを例示します。プログラムにアクセスするとJavaの道のトップページへリダイレクトされます。Servletプログラムの実行方法に関しては、Javaの道:Tomcat(プログラム配置・実行)を参照してください。
【SendRedirect.java】
package pack;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SendRedirect extends javax.servlet.http.HttpServlet {
  protected void doGet(HttpServletRequest req, HttpServletResponse res) 
	             throws ServletException, IOException {
    //(1)引数にリダイレクト先を指定します。
    res.sendRedirect("http://www.javaroad.jp/");
  }
}



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道