サーブレットの中身を見る
「以下は、作成したサーブレットの中身です。数か所にコメントが書き込まれていますが、ここでは見やすいようにカットしてあります。
●サーブレットの起点はdoGet()、doPost()、レスポンスはprocessRequest()で返す
「サーブレットには、リクエストの内容を受け取って処理を行うメソッド、そして処理内容をクライアントに送信するメソッドがあります。これらのメソッドがサーブレットの骨格となる処理を行います」
(1)必要なクラスのインポート
「Javaでは、必要に応じてライブラリからクラスを読み込んで、メソッドなどの機能を使うのですが、(1)の部分で読み込み(インポート)を行っています」
(2)アノテーション
「Javaでは『アノテーション』という仕組みを使って、ソースコードに関する注釈やオプション的な要素をJavaコンパイラーに伝えるようになっています。このあと出てくる@Overrideもアノテーションです。で、ここではサーブレットを宣言していることを伝える@WebServletというアノテーションを使っています」
「『サーブレットを使うよ』ってことを示すわけですね、ただそれだけですか」
「サーブレットの名前やサーブレットを呼び出すためのパス(URL)を指定します。特にURLはサーブレットを動作させるために必須です。これらの情報をnameやurlPatternsといった属性を使って設定しているのです」
属性 | 値 | |
---|---|---|
name | サーブレット名を表す文字列。 | |
urlPatterns | サーブレットのURL(アプリケーションのURL以下のパス)を配列として設定する。 | |
「アノテーションの書き方は、次のようになります。なお、属性の指定が不要な場合は『@アノテーション』とだけ記述します」
「以前は『web.xml』というファイルを作成し、このファイル内で設定するようになっていたのですが、Servlet 3.0からは、アノテーションを使って、直接ソースファイル内で設定できるようになったのです」
現在でもweb.xmlを使った設定は行えます。ソースコードに関する注釈やオプション的な指定を別ファイルにまとめておけるので、あえてweb.xmlを使う場合もあります。
(3)Servlet01クラス
「今回は、『Servlet01』というサーブレットクラスを作成しましたので、その宣言部です」
「HttpServletは、サーブレットに必要な機能を提供するるクラスです。ただし、各メソッドはオーバーライドを前提としていて、クラス自体も抽象クラスです。ですので、サーブレットを作る際は、HttpServletクラスを継承して各メソッドをオーバーライドして独自の処理を書くのです」
「何で継承なんて面倒なことするんですかね。最初っからサーブレットクラスとして作っちゃえばいいのに」
「HttpServletクラスに用意されているdoGet()/doPost()メソッドは、リクエストがあった場合に呼び出され、リクエストの内容を伝えるオブジェクトが渡されるようになっています。HttpServletクラスでは、このような仕組みを作っておいて、あとはサーブレットを作る側がクラスの機能を引継ぎながら、独自の機能を追加できるようにしているのですよ」
「そっか、サーブレットを作るってそういうことなのですね」
Copyright © ITmedia, Inc. All Rights Reserved.