////////////////////////////////////////////////////////////////////////////////
//  << sv101.java >>
//
// サーブレット(0):概説
//
// ●WebサーバとWebクライアント
//
//  WebではWebサーバとWebクライアントの2つのソフトウェアが情報を交換している。
//  ユーザが起動したWebクライアントが、WebサーバにWebページの要求(リクエスト)
//  を出すと、Webサーバは、Webページの返答(レスポンス)を返す。
//  Webページは、HTML言語で記述されたHTMLファイルで、Webクライアントは
//  受け取ったHTMLファイルを解釈し、画面に表示する。
//  この情報の交換は、HTTPというプロトコルにしたがって行われている。
//
// ●サーブレットとは
//
//  今まで、Webサーバ上にHTMLファイルや画像ファイルを保存し、Webクライアント
//  からの要求に応じて、同じWebページを返していた。
//  サーブレットは、Webサーバ上で動作するプログラムで、Webクライアントからの
//  要求を受け取ると、要求を解釈して、新たなWebページを作成することができる。
//  したがって、ユーザからの商品注文を処理するような状況に応じた柔軟なWeb
//  ページを作成することができる。
//
// ●サーブレットの書き方
//
//  サーブレットは、javax.servlet.httpパッケージのHttpServletクラスを拡張して
//  作成する。サーブレットには、initメソッド、serviceメソッド、doGetメソッド、
//  doPostメソッド、destroyメソッドを必要に応じて記述しておく。
//  Webサーバが要求を受け取ると、サーブレットが呼び出され実行される。
//
//   initメソッド    サーブレットが読み込まれたとき、一度だけ呼び出され
//            実行される。初期値設定に使われる。
//   serviceメソッド  クライアントからの要求を解析し、応答を返す。
//            ただし、要求がHTTPに基づく場合、HTTPヘッダに応じて、
//            doGetメソッドとdoPostメソッドを呼び出す。
//   doGetメソッド   GETリクエストを受け取ったとき実行される。
//   doPostメソッド  POSTリクエストを受け取ったとき実行される。
//   destroyメソッド  サーブレットが終了するとき実行される。
//
//  ・作成したサーブレットは、Webサーバ側の指定されたディレクトリに保存する。
//
// ●サーブレットの実行手順
//
//  (1)Webサーバは、Webブラウザから要求(URLやパラメータ)を受け取ると、
//     サーブレットコンテナを呼び出す。
//     サーブレットコンテナはサーブレットを起動する機能を持つ。
//     サーブレットコンテナとして、Tomcat-4.1.30を使う。
//  (2)サーブレットコンテナは、受け取ったURLから、該当するサーブレットを
//     メモリ上にロードし、インスタンス化し、起動する。
//  (3)パラメータ(フォームを使ったデータ)があれば、処理をする。
//  (4)HTML文書を作成し、Webクライアントに送信する。
//
//  (注1)サーブレットはメモリ上に常駐する。
//      リクエスト(他のWebクライアントからのリクエストも含む)に対して、
//      スレッドを作成し処理をする。このため、高速処理が可能になる。
//  (注2)サーブレットは、スレッドセーフになっていないため、クラス変数や
//       インスタンス変数を共有する場合(たとえば、ページへのアクセス
//            カウンタ)、synchronizedを指定して排他制御をする必要がある。
//
////////////////////////////////////////////////////////////////////////////////