連載
» 2016年08月02日 05時00分 公開

初心者のためのサーブレット/JSP入門(4):アノテーションが肝! Servlet 3.0で作ったWebアプリの中身とは (2/4)

[金城俊哉,著]

サーブレットの中身を見る

Navigator

「以下は、作成したサーブレットの中身です。数か所にコメントが書き込まれていますが、ここでは見やすいようにカットしてあります。


サーブレットクラス(Servlet01.java)

サーブレットの起点はdoGet()、doPost()、レスポンスはprocessRequest()で返す

Navigator

「サーブレットには、リクエストの内容を受け取って処理を行うメソッド、そして処理内容をクライアントに送信するメソッドがあります。これらのメソッドがサーブレットの骨格となる処理を行います」


(1)必要なクラスのインポート

Navigator

「Javaでは、必要に応じてライブラリからクラスを読み込んで、メソッドなどの機能を使うのですが、(1)の部分で読み込み(インポート)を行っています」


入出力に関する処理を行うクラスのインポート
サーブレットに最低限必要なクラスのインポート

(2)アノテーション

Navigator

Javaでは『アノテーション』という仕組みを使って、ソースコードに関する注釈やオプション的な要素をJavaコンパイラーに伝えるようになっています。このあと出てくる@Overrideもアノテーションです。で、ここではサーブレットを宣言していることを伝える@WebServletというアノテーションを使っています」


Driver

「『サーブレットを使うよ』ってことを示すわけですね、ただそれだけですか」


Navigator

「サーブレットの名前やサーブレットを呼び出すためのパス(URL)を指定します。特にURLはサーブレットを動作させるために必須です。これらの情報をnameやurlPatternsといった属性を使って設定しているのです」


@WebServletで使用する属性
属性
name サーブレット名を表す文字列。
urlPatterns サーブレットのURL(アプリケーションのURL以下のパス)を配列として設定する。
Navigator

「アノテーションの書き方は、次のようになります。なお、属性の指定が不要な場合は『@アノテーション』とだけ記述します」


アノテーションの構文

koubun
@アノテーション名(
  属性名 = 値,
  属性名 = 値, ...
)

@WebServletアノテーション
Navigator

「以前は『web.xml』というファイルを作成し、このファイル内で設定するようになっていたのですが、Servlet 3.0からは、アノテーションを使って、直接ソースファイル内で設定できるようになったのです」


Onepoint

 現在でもweb.xmlを使った設定は行えます。ソースコードに関する注釈やオプション的な指定を別ファイルにまとめておけるので、あえてweb.xmlを使う場合もあります。

(3)Servlet01クラス

Navigator

「今回は、『Servlet01』というサーブレットクラスを作成しましたので、その宣言部です」


Servlet01クラスの宣言部
Navigator

「HttpServletは、サーブレットに必要な機能を提供するるクラスです。ただし、各メソッドはオーバーライドを前提としていて、クラス自体も抽象クラスです。ですので、サーブレットを作る際は、HttpServletクラスを継承して各メソッドをオーバーライドして独自の処理を書くのです」


Driver

「何で継承なんて面倒なことするんですかね。最初っからサーブレットクラスとして作っちゃえばいいのに」


Navigator

「HttpServletクラスに用意されているdoGet()/doPost()メソッドは、リクエストがあった場合に呼び出され、リクエストの内容を伝えるオブジェクトが渡されるようになっています。HttpServletクラスでは、このような仕組みを作っておいて、あとはサーブレットを作る側がクラスの機能を引継ぎながら、独自の機能を追加できるようにしているのですよ」


サーブレットクラスはHttpServletクラスを継承して独自の機能を追加する
Driver

「そっか、サーブレットを作るってそういうことなのですね」

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。