サーブレットのソースコード
では、作成したサーブレット・クラスがどうなっているか見てみましょう。NetBeansで作成したクラスのソースコードを見ると、ざっと以下のようになっているのがわかります。(なお、コメント類は省略してあります)
package jp.tuyano;
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class NewServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
・・・ここに呼び出された際の処理を用意する・・・
out.close();
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Short description";
}
}
サーブレット・クラスは、javax.servlet.http.HttpServletというクラスを継承して作成します。このクラスを継承すると、サーブレットとしての必要な機能が実装された形でクラスが作成されます。HttpServletを継承していない場合、サーブレット・コンテナ内で実行することができません。
実際に実行する処理はprocessRequestというメソッドにまとめてありますが、これは「doGet」「doPost」というメソッドから呼び出されるようになっています。このdoGet、doPostというのが、サーブレットで最も重要となるメソッドなのです。
doGet――GETでサーブレットが呼ばれたときの処理
doPost――POSTでサーブレットが呼ばれたときの処理
GETとPOSTについては、既におわかりですね? 通常、Webブラウザなどから指定のURLを呼び出したときに送られる命令がGET、フォームなどからPOSTを指定して送られるのがPOSTと考えればよいでしょう。この2つのメソッドさえきちんと理解しておけば、とりあえずサーブレットを作ることはできるようになります。
このdoGet/doPostメソッドでは、HttpServletRequest/HttpServletResponseというクラスのインスタンスが引数で渡されていますね。これらはそれぞれ、HTTPによるリクエストとレスポンスの各種情報を持ったオブジェクトだと理解すればよいでしょう。要するに「Webブラウザからサーバーに送られてきたさまざまな情報」「サーバーからWebブラウザに送り返すさまざまな情報」がこれらにまとめられている、というわけです。
したがって、「どのような情報が送信されてきたか」を知りたければ、HttpServletRequestの中を探せば必ずその情報が見つかります。また「Webブラウザにこういう情報を送り返したい」ということは、HttpServletResponseを使ってその情報を送信すればいい、というわけです。