EclipseとTomacatでSCWCD

|

2. サーブレット テクノロジー モデル

2.1 HTTP

HTTPメソッド(GET、POST、PUTなど)の目的、及びHTTPプロトコルの技術的な特徴を説明する。また、クライアント(通常はWebブラウザ)がそれを使う理由を挙げ、HTTPメソッドに対応するHttpServletメソッドを識別する。

HTTPプロトコルについては、RFC2616 にて、 その仕様が公開されています。

2.1.1 HTTPメソッド

HTTPのメソッドについては、RFC2616 5.1.1 Method に記述があります。
HTTPメソッドは、Request-URI によって特定されるリソースに作用するメソッドを表します。
Request-URI とは、リクエストを適用する URI(Uniform Resource Identifier)を表します。
以下にHTTPメソッドの種類と概要を示します。

HTTP メソッド一覧
HTTPメソッド概要
OPTIONSRequest-URIにより識別される、request/response のチェインで利用可能な通信オプションについての情報をあらわす
GETRequest-URIにより識別される情報(エンティティ形式)であれば、なんでも参照することができる。
HEADサーバが、message-body を"返してはいけない"こと以外は、GETメソッドと同じ
POST Request-URIにより識別されるリソースに含まれる、新規リクエストに梱包されたエンティティをサーバが受け入れることを要求する場合に使用する。
PUT梱包されたエンティティをRequest-URIに保存するよう要求します。
DELETERequest-URIにより識別されるリソースを削除するよう要求します。
TRACEアプリケーション層のリクエストメッセージのループバックを遠隔から、呼び出すために使用する。
CONNECTプロキシが動的にチャンネル(SSLトンネリング等)を切り替える場合に使用するために、このメソッド名を予約している。

クライアントからサーバへのリクエストメッセージの最初の行に、Request-Lineとして、HTTPメソッドや、プロトコルバージョン等を指定します。
Request-Lineの書式は、HTTPメソッドトークンで始まり、Request-URIとプロトコルバージョンが続き、CRLFで終了します。
各要素はスペース文字で区切られている必要があります。CRおよびLFは、行末のみで許されます。

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

通常は、上記のようなHTTPメソッドは、Webクライアントツール(多くの場合はWebブラウザ)が暗黙で実行しているのですが、 このやり取りを表示するツールを作成しました。このツールを使うと、HTTPメソッドに対して、サーバからどのようなレスポンスが帰ってきているか、確認することができます。

Simple Web Client

webclient.jar実行形式のJarファイルのダウンロード
SimpleWebClient.javaソースファイル

使い方
http methodHTTP メソッドをプルダウンから選択
request-uri取得するリソースのuriを設定
http-versionHTTP プロトコルバージョンをプルダウンから選択
リクエストエリア最上段を設定することで、Request-Lineが設定されます
hostリソースの取得を依頼するホスト(プロキシサーバを使用している場合、そのホスト名)
portホストに接続するポート番号
requestこのボタンを押すとリクエストを送信し、結果を結果表示エリアに出力します
結果表示エリア結果を表示します

2.1.2 HttpServletクラスのメソッド

いよいよ本題のServletです。Servletの派生クラスである、HttpServletクラスには、HTTP メソッドを処理する、 各種メソッドが用意されています。

具体的にHttpServletのメソッドを見ていく前に、Eclipseに Webアプリケーションのプロジェクトを作成したいと思います。
そして、Eclipse上から視覚的にそれらを確認していきたいと思います。

まずは、Webアプリケーションプロジェクトを作成します
File > New > Other を選択します
Webアプリケーションプロジェクトを作成t

開いたダイアログにて、"Tomcat プロジェクト" を選択します


プロジェクト名の入力が求められます。任意でかまいませんが、ここでは、"scwcd" としておきます
デフォルトの設定を行うと、http://localhost:8080/scwcd が作成するWebアプリケーションのルートとなります。
プロジェクト名の入力

これで、Tomacat プラグインにより、Tomcatを使用した、Servlet、JSP 開発に必要な、ライブラリ等が自動的に設定されます。
パッケージエクスプローラを展開すると、これから確認しようとしている、HttpServlet クラスを確認することができます。
ためしに、HttpServlet クラスをダブルクリックすると、エディタが開きますが、提供されているライブラリは、 コンパイル済みのため、通常自分が作成するときに開く、Javaエディタではなく、クラスファイルエディタが起動しソースを確認することができません。

逆コンパイルプラグイン等を導入してもよいのですが、 ここでは、ソースファイルを入手して対応しようと思います。
パッケージエクスプローラを展開

Tomcat 5 Downloads ページから、 入手したTomcatと同じバージョンのソースファイル、jakarta-tomcat-5.5.9-src.zip をダウンロードし、 %ECLIPSE_HOME%\workspace\scwcdにコピーします。
※ %ECLIPSE_HOME%は、eclipse をインストールしたディレクトリ、また、コピー場所は任意です。
、jakarta-tomcat-5.5.9-src.zip をダウンロード

先ほどのクラスファイルエディタから、Attach Source ボタンを押すことで、ソースファイルと関連付けを行うことができます。
パッケージエクスプローラのライブラリ項目のプロパティからも同様の設定を行うことができます。
Attach Source

Source Attachement Configuration ダイアログが開くので、Variable ボタンを押すことで、登録された、環境変数を選択できます。
先ほどソースファイルを、%ECLIPSE_HOME% の下位フォルダにおきましたので、ここでは、ECLIPSE_HOME を選択します。
Source Attachement Configuration

つづいて、Extension ボタンを押すと、%ECLIPSE_HOME% 以下のファイルが選択できますので、先ほどコピーした、jakarta-tomcat-5.5.9-src.zip を選択してください。
Extension

これで、HttpServletクラスをダブルクリックすることで、ソースの中身を確認することができるようになりました。
ソースの中身を確認

また、任意のクラスを開くには、Shift + Ctrl + T を押下することにより、型選択ダイアログが表示され、 テキストボックスに入力した、文字にインクリメンタルに一致する型が検索されます。
ソースの中身を確認