サーブレットは、HTTP リクエストがサーブレットを Java サーブレットとして直接的に参照した場合、または JSP ファイルとして間接的に参照した場合に起動します。サーブレットが実行する最も一般的なタスクは、HTTP リクエストに保管された情報にアクセスし、その情報を処理してから、結果を HTTP レスポンスの一部としてクライアントに返すことです。
HTTP リクエストには、クライアントからサーブレットに送信される情報が含まれています。たとえば、サーブレットがフォームによって呼び出された場合、サーブレットは処理を行う前に、リクエストに保管されているフォームデータにアクセスします。フォームデータには、たとえば、ユーザー認証で使用されるログイン情報、データベースに書き込まれる登録情報、ユーザーのショッピングカートに追加される商品情報などが含まれます。
次の方法で、サーブレットや JSP の HTTP リクエスト情報にアクセスできます。
javax.servlet.HttpServletRequest オブジェクトを使用します。このオブジェクトは、リクエスト内に保管された情報のアクセスに使用できるメソッドを定義しています。
javax.servlet.HttpServletRequest オブジェクトの場合と同じメソッドを使用できます。サーブレットは、HTTP レスポンスを構築し、このレスポンスをクライアントに返すことによって、リクエストに応じます。サーブレット内で、HTTP レスポンスにアクセスし、クライアントに返されるレスポンスに情報を書き込みます。
次の方法で、サーブレットや JSP の HTTP レスポンス情報にアクセスできます。
javax.servlet.HttpServletResponse オブジェクトを使用します。このオブジェクトは、レスポンスに保管された情報にアクセスするメソッドを定義しています。
javax.servlet.HttpServletResponse オブジェクトの場合と同じメソッドを使用できます。HTTP レスポンスには、クライアントへ結果を返送するのに使用する出力ストリームが含まれます。
request オブジェクトと response オブジェクトには多くのメソッドがあり、クライアントからのリクエストを処理するために使用します。次の例では、サーブレットはこれらのオブジェクトを反映し、メソッドと戻り値のタイプを表示します。
...
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
Object object = null;
String targetClass = "javax.servlet.ServletConfig"; //デフォルト
String checkReq = req.getParameter("targetClass");
if (checkReq != null) {
targetClass = checkReq;
}
if (targetClass.equals("javax.servlet.ServletContext")) {
object = getServletContext();
}
if (targetClass.equals("javax.servlet.ServletConfig")) {
object = getServletConfig();
}
...
try {
Class c = Class.forName(targetClass);
Method[] meths = c.getMethods();
Object[] arguments = new Object[] {};
for (int i=0; i<meths.length; i++) {
String methodName = meths[i].getName();
String returnType = meths[i].getReturnType().getName();
String desc = meths[i].toString();
Class[] parameterTypes = meths[i].getParameterTypes();
int m = c.getModifiers();
out.println("<TR><TD><I>" + methodName + "</I></TD><TD>" +
returnType + "</TD><TD>" + desc + "</TD>");
}
} catch (Exception e) {}
...
サンプルサーブレットを表示するには、samples JRun サーバを起動し、ブラウザで http://localhost:8200/techniques を開きます。
サーブレットの request オブジェクトからは、一般的な CGI 環境変数から提供されるものと同じ環境に関する情報が提供されます。次の表に、request オブジェクトのメソッドとそれらに対応する CGI 環境変数をリストします。