サーブレットの処理の流れを見る
では、実際に簡単なHTMLのコードを呼び出し元に送り返す処理を作成してみましょう。processRequestを以下のように書き換えてみます。
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet NewServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet NewServlet at " +
request.getContextPath () + "</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
ここで行なっているのは非常に単純なことです。ざっとポイントを整理しておきましょう。
response.setContentType("text/html;charset=UTF-8");
これは、送信する情報のコンテンツタイプを設定するものです。情報をクライアント側に送り返す場合にはHttpServletResponseインスタンスを利用しますが、何よりも先に行なっておくべきは「どういう情報が送られるか」ということを設定しておくという作業です。このresponse.setContentTypeというのを呼び出すことで、これから送り出されるのがどんな情報かを指定できます。ここでは、"text/html;charset=UTF-8"というコンテンツタイプを指定して、「これはtext/htmlのデータで、キャラクタセットはUTF-8を使っていますよ」ということを教えていたのです。
PrintWriter out = response.getWriter();
コンテンツタイプの設定が終わったら、実際にデータを送り返す準備をします。
HttpServletResponseでは、getWriterメソッドを使ってPrintWriterを取り出すことができます。このPrintWriterは、アクセスしているWebブラウザに送信するためのストリームです。このgetWriterで取り出したストリームに情報を書き出せば、アクセスしたブラウザにそれを出力することができるのです。
out.println("<html>");
取り出したPrintWriterのprintlnを使ってHTMLのソースコードを送信しています。こうすることで、引数に指定したテキストをWebブラウザに書き出すことができます。後は、このprintlnをひたすら繰り返して、HTMLのコードをすべて書き出すだけです。
いかがでしょう、サーブレットでの基本的な処理の流れがわかったでしょうか。基本は、
1.response.setContentTypeでコンテンツタイプを設定する。
2.response.getWriterでPrintWriterを取り出す。
3.PrintWriterのprintlnで出力するHTMLコードを書き出す。
――これだけです。この3つのポイントさえしっかり理解できれば、サーブレットを利用するのはそれほど難しくはありません。