Servlet日記(1999/02/01)

本日の成果

 昨日のservletを、少し改造してみました。変更点は、content-typeをtext/htmlにしたこと、ServletOutputStreamを使って出力するようにしたことと、日時を返すようにしたことです。しかし、書式を整えて日時を出力するだけで、えらく大変です。考え方に慣れていないのが原因でしょうが・・・。

import  java.io.*;
import  java.util.*;
import  java.text.*;
import  javax.servlet.*;
import  javax.servlet.http.*;

public class Now extends HttpServlet {
        public void doGet(
                HttpServletRequest req,
                HttpServletResponse res
        ) throws ServletException, IOException
        {
                res.setContentType("text/html");

                Date d = new Date();
                String s = DateFormat.getDateTimeInstance().format(d);
                ServletOutputStream out = res.getOutputStream();

                out.print("<html><head><title>Now! servlet</title></head><body>"
                        + s + "</body></html>");
                out.close();
        }
以下、省略

 ServletOutputStreamとPrintWriterの違いは、どのあたりにあるのでしょう。ドキュメントによれば、PrintWriteはテキスト出力向けということなので、扱えるデータに制限があるか、何らかの変換を行えるのかだと思うのですが・・・

 Webブラウザだけでなく、telnetでもservletrunnerに接続して、ちゃんと応答が返っていることを確認しました。応答の中にステータスコードを見つけて、ふと、サーバリダイレクションはどうするのかと思ってドキュメントを見ると、sendRedirectメソッドがありました。setStatusメソッドもあり、メッセージも指定できるようです。サーバリダイレクションの確認用に、ポート80番でIISを動かしておいて、以下のようにsendRedirectメソッドでそこにリダイレクトするservletを作ってみると、成功です。まあステータスコードが返せるのなら、Hello, Worldができれば同じことなんですけどね。

{
    res.sendRedirect("http://localhost/");
}

本日の教訓

 サーバリダイレクションにはsendRedirectメソッドを使おう。

Servlet日記(1999/01/31) Servlet日記の目次 Servlet日記(1999/02/02)