第1回 サーブレットアプリケーションを体験しよう

実際にサーブレットを作ってみる

 それでは、実際にサーブレットを作成してみましょう。ここでは、多くのプログラミング解説の例にのっとり、入力された名前に返答するいわゆるHello Worldのサーブレット版を作成してみましょう。作成するアプリケーションを実行した様子を以下に示します。

名前を入力することができるHTMLフォーム

「○○さん、こんにちは」という返答を返すサーブレット

 このアプリケーションは、以下のような機能を持つものとします。

  • 名前を入力することができるフォームを表示する(HTMLフォーム)
  • 「入力されたユーザー名+さん、こんにちは」という返答をする

 この要件を満たすアプリケーションを作成するには、以下の4つのファイルを作成する必要があります。

  • 作成するアプリケーション全体を管理するJBuilderプロジェクト(MyServletProj.jpx)
  • Webアプリケーションを管理するためのWebモジュール(MyWebModule)
  • 名前を入力するフォームを持つHTMLファイル(myservlet.html)
  • 「○○さん、こんにちは」と返答するサーブレットクラス(MyServlet.java)
作成すべきファイル

 それでは、これらを順に作成しましょう。

ステップ1:JBuilderプロジェクトを作成する

 JBuilderはプロジェクトと呼ばれる単位で作業を進めます。「プロジェクト」ファイルには、使用するクラス、プロジェクトのビルド方法、実行方法などの設定が保存されます。JBuilderを起動し、[ファイル|新規プロジェクト]を選択すると、[プロジェクトウィザード]というウィンドウが表示されます。ここでは、構築するプロジェクトの名前や、格納するディレクトリを指定します。

プロジェクトウィザード

 作成するプロジェクトはMyServletProjと命名することにしましょう。ほかの項目は、すべてデフォルト設定のままで構いません。[終了]を選択して、プロジェクトファイルを作成します。

ステップ2:Webモジュールを作成する

 プロジェクトを作成したら、次にWebモジュールを定義します。Webモジュールとは、これから作成するWebアプリケーションに必要なモジュール(HTMLファイルやサーブレット、画像イメージなど)をZIP形式にまとめたようなファイルです(通常のJavaアプリケーションであればJAR・Java ARchive)。ここには、Webコンテナへの指示を記述したweb.xmlファイルも同梱されます。コンパイルされると拡張子がWAR(Web ARchive)のファイルとしてWebコンテナに配布されます。

 Webアーカイブを作成するには、[ファイル|新規]を選択し、オブジェクトギャラリを表示します。このウィンドウでは、作成可能なファイルの種類が列挙されています。ここでは、[Web]グループの[Webモジュール]という項目を選択します。

オブジェクトギャラリ

 Webモジュールを作成するためのウィザードが表示されます。初めに、Webモジュールを既存のファイルを基に作成するか、新規に作成するかを指定します。

Webモジュールウィザード

 ここでは、既存のWebモジュールは存在しないので、[空Webモジュールの作成]を選択します。次に、作成するWebモジュールの名前、サーブレット・JSPのバージョンを指定します。

Webモジュールウィザード −モジュール名の指定

 ここでは名前を「MyServletModule」と指定し、サーブレット・JSPのバージョンはあらかじめ選択されているとおり、Servlet 2.3とJSP 1.2を利用しましょう。また、WARファイルを自動生成するように設定をしておきます。

表1 [Webモジュールの基本属性]ページに設定する値
項目名 設定する値
名前 MyWebModule
ディレクトリ MyWebModule
Webアーカイブのビルド プロジェクトまたはモジュールのビルド時
使用可能標準 Servlet 2.3 と JSP 1.2

 最後に、StrutsやJSTLなど、追加で必要なフレームワークの有無を指定します。

Webモジュールウィザード −コンテキスト名とフレームワークの指定

 ここでは、特にこれらを指定する必要はありません。以上で、Webモジュール「MyServletModule」を定義できました。ウィザードが終了すると、Webモジュールデザイナが起動します。この画面では、必要に応じて参照するEJBやセキュリティといった項目を設定できますが、ここでは特に何も設定しなくても構いません。

Webモジュールデザイナ (クリックすると拡大します)

ステップ3:サーブレットの作成

 いよいよサーブレットのひな型を作成します。ここでは、ユーザー名を入力するためのフォームを持つHTMLファイルと、サーブレットを一緒に作ります。初めに、これまでの作業と同様に[ファイル|新規]を選択し、オブジェクトギャラリを表示します。

オブジェクトギャラリ (クリックすると拡大します)

 [Web]グループから[サーブレット]を指定します。サーブレットのひな型を自動生成するサーブレットウィザードが起動します。

サーブレットウィザード −クラス名の指定

 作成するサーブレットクラスのクラス名、パッケージ名、格納先のWebモジュールを指定します。ここではクラス名としてMyServletを指定しましょう。パッケージ名は、任意の名前を指定して構いません。

 次に、サーブレットに実装するメソッドを指定します。ウィザードには、doGetやdoPostなどの代表的なメソッドのチェックボックスが表示されています。

サーブレットウィザード −実装するメソッドの指定

 ここでは、doGetをチェックします。また、ユーザー名を入力するHTMLファイルを生成するために、[HTMLファイルとフォームの生成]オプションにもチェックを付けます。

doGetメソッドとdoPost、doPut、doDeleteメソッド
WebブラウザとWebサーバの間の通信手順は、HTTP(Hyper Text Transfer Protocol・ハイパーテキスト転送プロトコル)として定義されています。HTTPプロトコルに基づいてサーバにリクエストを行う方法には、指定したURLに対するデータを要求するGETメソッド、データを添付してリクエストを行うPOSTメソッドなど、いくつかの命令パターンがあります。doGetメソッドやdoPostメソッドは、これらの通信手順に基づいた応答記述をするためのメソッドです。サーブレットを作成するときの派生元クラスとなるHttpServletクラスでは、あらかじめdoGetやdoPostといったメソッドが定義されています。皆さんは、あらかじめ定義されているメソッドをオーバーライドしてコーディングを行います。なお、通常は、doPutやdoDeleteを使う必要はありません。

 次に、HTMLフォーム上に作成する入力項目を定義します。ここで設定するパラメータは、後にサーブレットに渡されます。ここでは、ユーザー名を入力するフィールドを追加しましょう。ここでは、作成するサンプルの仕様にあるように、「ユーザー名」を入力するための変数を定義しましょう。

サーブレットウィザード −リクエスト引数の指定

 [引数の追加]ボタンを選択し、この情報(ユーザー名)を処理する変数の名前、型、変数名、デフォルト値を指定します。設定する内容は、以下のとおりです

表2 [サーブレットリクエスト引数]に追加するパラメータ
項目名 設定する値
名前 myName
String
説明 ユーザー名
変数 myName
デフォルト (無記入)

 以上で、必要な設定は終了です。[終了]を選択して、ウィザードを終了します。ウィザードが終了すると、サーブレットのひな型が生成され、自動的にサーブレットクラスの編集画面になります。

サーブレットクラスのひな型が生成されたところ (クリックすると拡大します)

 JBuilderの画面は、大きく分けて3つの領域に分かれています。左上の画面は、プロジェクトに含まれるすべてのファイルが階層構造で表示されている「プロジェクトペイン」という場所です。該当のファイルをダブルクリックすることで編集可能となります。

 画面の右側は、編集中のファイルが表示されている「内容ペイン」と呼ばれる画面で、下側のタブで画面を切り替えることでソースコードやJavaDoc、ファイルの編集履歴など、異なる方法でファイルにアクセスできます。左下の部分は、編集中のファイルの構造を解析した内容が表示されている「構造ペイン」という場所で、Javaコードを編集しているときは、編集中のクラスの構造が表示されています。

doGet以外に自動生成されたメソッド-サーブレットのライフサイクルについて
作成されたサーブレットのソースコードを見ると、ウィザードでチェックを付けたdoGetメソッド以外にも、initやdestroyといったメソッドが定義されています。これらは、自動生成されたコメントにも記載されているようにアプリケーションの初期化時や終了時に1度だけ呼び出されるコードです。サーブレットは以下の順序で動作します。
  1. クラスファイルがJava VMに読み込まれる(ロードされる)
  2. 2. 初期化メソッド(init)が呼び出され、サーブレットが実行可能な状態となる
  3. クライアントからリクエストがあるとdoGetメソッドやdoPostメソッドが呼び出される
  4. Webサーバが終了する前もしくは新しいサーブレットに更新する前にdestroyメソッドが呼び出される
このように、サーブレットはWebコンテナに動作可能な状態として常に待機するので、クライアントからの呼び出しがあると即座に応答できるのです。

 今回の作業はここまでです。自動生成されたコードの説明は次回に譲りますが、すでに実行可能なコードが生成されているのがお分かりいただけると思います。次回は、自動生成されたコードをベースに、今回のサンプルアプリケーションの仕様を満たすようコードを書き換え、このアプリケーションを完成させます。

2/2  

 INDEX

第1回 サーブレットアプリケーションを体験しよう
  Page1
JavaによるWebアプリケーションを手軽に試して学習するには
Webアプリケーションの基本原理
サーレットで動くWebアプリケーションとは
  Page2
実際にサーブレットを作ってみる




「ツールでトライ!初めてのWebアプリケーション」記事一覧




Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間