はじめに
今回は、「サーブレット」についての説明を行います。サーブレットとは、サーバで動く小さなプログラム。このサーブレットこそ、JavaでWeb開発を行う際の最も基本となるものといっていいでしょう。というより、実をいえば今まで説明してきたJSPも、その正体は「サーブレット」だったりするのですから。
過去の記事
対象読者
- Javaの基本(文法全般および基本的なクラスライブラリの使い方程度)をマスターしている人。
- サーバサイド(JSP、サーブレット)について基礎から勉強したい人。
- Eclipse WTPを使った開発に興味がある人。
JSPからサーブレットへ!
前回まで、JSPの基本的な利用について説明を行ってきましたが、実をいえばサーバサイドで使われるJava技術にはもう1つの形態があります。それが「サーブレット」です。今回は、このサーブレットについて説明をしましょう。
サーブレットというのは、「サーバで動く小さなプログラム」のことです。Webブラウザで動くアプレットというプログラムがありますが、あれのサーバ版といったものをイメージすればいいでしょう。ただし、サーバで動くものですから、アプレットのようにウインドウやメニューをもったビジュアルなプログラムではありません。基本は、サーバに問い合わせをしたクライアント(Webブラウザ)に対してHTMLベースのテキストを送信する、そういう働きをするものといってよいでしょう。
では、サーブレットとJSPは、どのような違いがあるのでしょうか。違いを簡単にまとめてみましょう。
- JSPは、基本的にHTMLの中にタグを使ってソースコードを書くというものですが、サーブレットは「Javaのクラス」です。従って、完全にJavaのクラスとして定義をします。クラスですから、HTMLの出力なども当然すべてソースコードでテキストを書き出す処理を書いて行うことになります。
- サーブレットはクラスですから、コンパイルしクラスファイルとして作成する必要があります。JSPは、コンパイルなどは不要です。
- JSPは、サーバが公開しているディレクトリにファイルを配置しておけば、そのファイルにアクセスするだけで表示されます。サーブレットはJavaのクラスですから、ただ公開ディレクトリにおいてあっても、そのままでは動きません。サーバに、特定のURLへアクセスしたらサーブレットを実行するように指定を行う必要があります。
- サーブレットは、配置する場所や設定ファイルの置き場所など、ディレクトリの構造なども正しく作成する必要があります。JSPは、とにかくアクセスできる場所においておけば使えます。
全体として、JSPなどよりもかなり厳格に設計し作成する必要があることはお分かりでしょう。必要なファイルやフォルダなどをきちんと用意し、クラスを定義し、それをコンパイルし、公開に必要な定義ファイルを作成配置する。そうしたことを正しく行って、初めてサーブレットが利用できるようになります。
手作業でこれらを行おうとすると、どうしてもちょっとしたミスをしてしまいがちですが、Eclipseのような開発環境を使えばこうした面倒な処理も簡単に行うことができます。JSPではそれほど便利さを体感しなかった人も、サーブレットになると開発環境のありがたみを感じるようになりますよ。
サーブレットを作成する
では、実際に簡単なサーブレットを作成してみることにしましょう。Eclipse WTPを起動し、前回までサンプルとして作成してきた「myweb」プロジェクトの中に簡単なサーブレットを用意してみることにします。
まず、[ファイル]-[新規]-[その他]-[メニュー]を選び、現れた画面で「Web」項目内にある「サーブレット」を選択し次へ進みます。
次の「サーブレットの作成」画面で、サーブレットに関する基本的な情報を設定していきます。ここでは、次のように項目を設定してください(多くは初期状態で設定済みとなっています)。
設定項目 | 設定値 |
プロジェクト | myweb |
フォルダ | \myweb\src |
Javaパッケージ | jp.codezine |
クラス名 | MyServlet |
スーパークラス | javax.servlet.http.HttpServlet |
既存のサーブレット・クラスの使用 | OFF |
注釈付きサーブレット・クラスの生成 | OFF |
次に進むと、「サーブレットの作成」画面がまた現れます。ここで、次のように設定をしておきましょう(多くは初期状態のままでOKです)。
設定項目 | 設定値 |
名前 | MyServlet |
記述 | 簡単な説明文。任意でいい。 |
初期化パラメーター | 特になし |
URLマッピング | /myserv |
最後に、作成するサーブレットのクラスとオーバーライドメソッドの実行について設定を行う画面で、次のように記述をします。
設定項目 | 設定値 |
修飾子 | publicをON、他はOFF |
インターフェイス | javax.servlet.Servlet |
作成するメソッド・スタブの選択 | スーパークラスからのコンストラクター、継承された抽象メソッド、doPost、doGetをON |
これで、サーブレットのクラスファイルを作るソースコードファイルとサーブレット利用に必要な定義ファイルなどが自動生成されます。