Webアプリ開発事始 第13回

Java入門(3)
~サーブレットとJSP
長谷川裕行
有限会社 手國堂

サーブレット

サーバー側で動作するJavaはサーブレットと呼ばれます。基本的な原理はCGIに似ていますが、CGIにはないメリットがあります。


- CGIより速い -

Javaサーブレットは、アプレットのように直接仮想マシン上で動作するのではなく、サーブレット・コンテナと呼ばれる機構を介して実行されます。サーブレット・コンテナはWebサーバーと連動し、Webサーバーからの要求に応えてサーブレットを実行します。

処理を行ったサーブレットは結果をHTMLデータとしてWebサーバーに返し、それがクライアントに送信されます。

このように、サーブレットの大まかな動作はCGIに似ています。異なるのは、サーブレットがサーブレット・コンテナを経由してJava仮想マシンで動作する点です。CGIのように標準入出力や環境領域など、サーバーOSの機能を直接使う訳ではありません。

CGIは個々のプログラムを単独で起動するため、リクエストから起動までに時間がかかります。加えてCGIは、複数のリクエストに対して同じプログラムが複数実行されます。一方サーブレットは、一度起動するとコンテナ内に常駐し、内部でスレッドを生成するため、起動も実行も高速になります。




- コンテナとサーバー -

サーブレットの実行環境には、いくつかの形態があります。これは、サーブレットを実行するコンテナと、コンテナを介してサーブレットと連携するWebサーバーとの関係による違いです。

1つは、コンテナ自体がWebサーバーの機能も持っている形態で、Javaで開発されたアプリケーションサーバーに代表されます。雑誌などでよく紹介されているjakarta Tomcatも、コンテナとWebサーバーの機能を持っています。

これと似た形態に、内部にコンテナ機能を持っているWebサーバーがあります。コンテナがWebサーバー機能を持っている形態と、基本的には同じことです。Java以外の言語でアプリケーションを開発することも可能なアプリケーションサーバーなどは、この形態です。

3つ目は、既存のWebサーバーにプラグインとしてコンテナの機能を組み込む形態で、アドオンタイプなどと呼ばれています。Tomcatは単独のコンテナとして、ApacheやIISに組み込んで利用できます。




- サーブレット版“Hello world” -

サーブレットのサンプルを紹介しておきます。アプレットのところで取り上げた、Java版“Hello world”です。実行すると、ブラウザに“Hello Servlet world!”の文字列が表示されます。

もちろん、サーブレットの実行環境がなければ、動作を試すことはできません。

リスト1:サーブレット版“Hello world”プログラム(HelloSv.java)


- サーブレットの実行 -

リスト1のソースをjavacでコンパイルすると、HelloSv.classというクラスファイルが生成されます。生成されたサーブレットを実行するには、出来上がったクラスファイルをサーブレット・コンテナの指定されたディレクトリに保存し、ブラウザからクラスへのURLを指定します。

Tomcatの場合なら、例えば以下のようなディレクトリに保存することになります(Windows版の場合)。
  C:\tomcat\webapps\test\WEB-INF\calsses
    ↑Tomcatをインストールしたディレクトリ

ファイルを保存してからTomcatを起動(再起動)すれば、あとはブラウザから例えば以下のようにURLを指定することで、サーブレットが実行され画面にメッセージが表示されます。

  http://xxxx.xx/test/servlet/HelloSv

ローカルな環境で試す場合は、

  http://localhost:8080/test/servlet/HelloSv

のようにします。

これらはあくまで一例です。ソースのコンパイル方法やコンテナのインストール方法、その他詳しい設定方法などは本記事のテーマから離れるため、省略しています。実際にサーブレットを試す場合は、Tomcatなどのサーブレット・コンテナやJ2SEのドキュメントをお読みください。


トップページ
サーブレット
CGIより速い
コンテナとサーバー
サーブレット版“Hello world”
サーブレットの実行
JSP
JavaBeanとJDBC
iアプリとJava
あとがき

Copyright © MESCIUS inc. All rights reserved.