アノテーションが肝! Servlet 3.0で作ったWebアプリの中身とは:初心者のためのサーブレット/JSP入門(4)(2/4 ページ)
初めてJavaのWebアプリを作ってみたいという人に向けて、Servlet 3.0で作ったWebアプリの中身についてコードを交えて解説する。
サーブレットの中身を見る
「以下は、作成したサーブレットの中身です。数か所にコメントが書き込まれていますが、ここでは見やすいようにカットしてあります。
●サーブレットの起点はdoGet()、doPost()、レスポンスはprocessRequest()で返す
「サーブレットには、リクエストの内容を受け取って処理を行うメソッド、そして処理内容をクライアントに送信するメソッドがあります。これらのメソッドがサーブレットの骨格となる処理を行います」
(1)必要なクラスのインポート
「Javaでは、必要に応じてライブラリからクラスを読み込んで、メソッドなどの機能を使うのですが、(1)の部分で読み込み(インポート)を行っています」
(2)アノテーション
「Javaでは『アノテーション』という仕組みを使って、ソースコードに関する注釈やオプション的な要素をJavaコンパイラーに伝えるようになっています。このあと出てくる@Overrideもアノテーションです。で、ここではサーブレットを宣言していることを伝える@WebServletというアノテーションを使っています」
「『サーブレットを使うよ』ってことを示すわけですね、ただそれだけですか」
「サーブレットの名前やサーブレットを呼び出すためのパス(URL)を指定します。特にURLはサーブレットを動作させるために必須です。これらの情報をnameやurlPatternsといった属性を使って設定しているのです」
属性 | 値 | |
---|---|---|
name | サーブレット名を表す文字列。 | |
urlPatterns | サーブレットのURL(アプリケーションのURL以下のパス)を配列として設定する。 |
「アノテーションの書き方は、次のようになります。なお、属性の指定が不要な場合は『@アノテーション』とだけ記述します」
「以前は『web.xml』というファイルを作成し、このファイル内で設定するようになっていたのですが、Servlet 3.0からは、アノテーションを使って、直接ソースファイル内で設定できるようになったのです」
Onepoint
現在でもweb.xmlを使った設定は行えます。ソースコードに関する注釈やオプション的な指定を別ファイルにまとめておけるので、あえてweb.xmlを使う場合もあります。
(3)Servlet01クラス
「今回は、『Servlet01』というサーブレットクラスを作成しましたので、その宣言部です」
「HttpServletは、サーブレットに必要な機能を提供するるクラスです。ただし、各メソッドはオーバーライドを前提としていて、クラス自体も抽象クラスです。ですので、サーブレットを作る際は、HttpServletクラスを継承して各メソッドをオーバーライドして独自の処理を書くのです」
「何で継承なんて面倒なことするんですかね。最初っからサーブレットクラスとして作っちゃえばいいのに」
「HttpServletクラスに用意されているdoGet()/doPost()メソッドは、リクエストがあった場合に呼び出され、リクエストの内容を伝えるオブジェクトが渡されるようになっています。HttpServletクラスでは、このような仕組みを作っておいて、あとはサーブレットを作る側がクラスの機能を引継ぎながら、独自の機能を追加できるようにしているのですよ」
「そっか、サーブレットを作るってそういうことなのですね」
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- Strutsを使い続けることの問題点&現在有力なJava EE、Spring、Play Frameworkの基礎知識とアーキテクチャ
新規のエンタープライズJava開発において現在有力視される3つのフレームの違いについて解説する連載。初回は、Strutsを使い続けることの問題点と3つの概要、アーキテクチャ、使い分けについて。 - Eclipse 3.4で超簡単Javaプログラミング基礎入門
これからプログラミングを学習したい方、Javaは難しそうでとっつきづらいという方のためのJavaプログラミング超入門連載です。最新のEclipse 3.4とJava 6を使い大幅に情報量を増やした、連載「Eclipseではじめるプログラミング」の改訂版となります - Struts後時代のJava EE/Javaモダン開発はどうあるべきか〜JJUG CCC 2014 Springまとめリポート(前編)
Java EEにおいてJava 8はどこまで利用できるのか、Java開発でGit、CI、継続的デリバリは、どこまで有効なのか、Struts後時代のJava EE開発における有効なフレームワークなどをお伝えする。