サーブレットを作ろう! (1/5)
作成:2012-05-27 10:57
更新:2012-05-27 10:57
更新:2012-05-27 10:57
■サーブレットとJSPの違いって?
サーバーサイドJavaの基本ともいえる技術は、JSPの他にもう一つあります。それは「サーブレット」です。この2つは、一体、どう違うのでしょうか。
答えは、「同じ」です。つまり、JSPとサーブレットは、同じものなのです。というより、正確にいえば、「JSPというサーバーサイド独自のスクリプト言語」というのは存在しないのです。JSPは、実はサーブレットなのですから。
ちょっと整理しましょう。サーバーサイドJavaのプログラムは、一般的なアプリケーションとはだいぶ違います。アプリケーションは、そのプログラムを起動して実行しますが、サーバーサイドではそうもいいませんね。
サーバーサイドでは、Javaのサーバーというのがあって、その中で動くプログラムを開発するような仕組みになっています。これは、例えばWebブラウザの中に「アプレット」という小さいプログラムを組み込んで動かすのと同じようなイメージで考えるとよいでしょう。アプレットは、アプリケーションではありませんね? あらかじめ小さなプログラムを動かす枠組みがあって、その枠組みにあわせて作られたプログラムをWebページにはめ込むと、自動的にそれが認識され動くわけです。
サーバーサイドも同じです。Javaサーバーでは、その中でプログラムを動かすための仕組みが用意されています。そして、その仕組にそってプログラムを作り、組み込んでおくのです。ユーザーがそのプログラムに割当てられているURLにアクセスすると、Javaサーバーはそのプログラムを実行するようになっているのですね。
この「Javaサーバーで動く小さなプログラム」が、サーブレットです。「Webページとアプレット」を、そのまま「Javaサーバーとサーブレット」に置き換えて考えてみてください。
では、JSPというのは何か? サーブレットは、要するにJavaのプログラムですから、作るのもちょっと大変です。全部Javaでコーディングしないといけません。単に内部の処理だけでなく、クライアント(要するにWebブラウザ)に表示されるHTMLのコードも全部Javaのコードとして書かないといけないのです。HTMLをすべてprintlnで作成するところを想像してみてください。ほとんど拷問です。
そこで、「もっと手軽にサーバーサイドJavaを使えるように」ということで考えだされたのがJSPなのです。Javaサーバーが行なっていること、それは「簡単なタグを使って記述されたJavaのコードをその場で実行すること」では、実はありません。
Javaサーバーは、JSPのコードを読み込み、それをサーブレットのソースコードに変換します。HTMLのタグなども、すべてprintlnで書きだすように変換されるのです。そうして生成されたサーブレットのソースコードをコンパイルし、サーブレットを生成してそれを呼び出します。つまり、「JSPは、サーブレットだった」のですね。
同じものだといっても、ユーザーにとってはかなり違いはあります。JSPは、HTMLの中に処理を埋め込むことができますから、HTMLページにちょっと何かを追加するような場合にはとても重宝します。逆にサーブレットは、HTMLでの事細かな出力などをあまり考えないで済むようなところで役立ちます。「フロントエンド(ユーザーに表示される側)はJSP、バックエンド(サーバーで動く見えない側)はサーブレット」というように、両者をうまく使い分けるのがよいでしょう。
サーブレットの基本的な作り方の説明に入る前に、一つ頭に入れておいてほしいことがあります。それは「サーブレットのバージョン」です。
サーブレットも、サーバーサイドJavaのAPIとして提供されています。そしてもちろん、日々改良されており、時々バージョンアップしていろいろな機能が使えるようになります。問題は、「最新バージョンでサーブレットを作っても、使用するサーバーが対応していないと使えない」という点です。
現在、サーブレットを利用しようとしたとき、そのバージョンは明確に2つに分かれるといってよいでしょう。それは「3.0」以前と以降です。サーブレットは、3.0でかなり大きな改良が行われており、作り方などもだいぶ変わりました(基本コードは変わりありませんが……)。3.0以前は、サーブレットのコードの他に設定ファイルなどを書かないといけなかったのですが、3.0からサーブレットのコードだけ書けば、他に何もいらなくなったのです。
GAEは、実はまだ3.0に対応していません。その前の「2.5」というバージョンになっています。このため、最新バージョンに比べるといろいろ面倒なのです。――この入門は、GAEを使いますが、基本的に「JSP/サーブレットの入門」です。したがって、3.0についても触れておきたい。でも、GAEでは動かない。というわけで、「2.5ベースで作っていくが、一応3.0についても説明しておくので、もしGAEが対応したら自分で直してね」というアプローチでいきたいと思います。
答えは、「同じ」です。つまり、JSPとサーブレットは、同じものなのです。というより、正確にいえば、「JSPというサーバーサイド独自のスクリプト言語」というのは存在しないのです。JSPは、実はサーブレットなのですから。
ちょっと整理しましょう。サーバーサイドJavaのプログラムは、一般的なアプリケーションとはだいぶ違います。アプリケーションは、そのプログラムを起動して実行しますが、サーバーサイドではそうもいいませんね。
サーバーサイドでは、Javaのサーバーというのがあって、その中で動くプログラムを開発するような仕組みになっています。これは、例えばWebブラウザの中に「アプレット」という小さいプログラムを組み込んで動かすのと同じようなイメージで考えるとよいでしょう。アプレットは、アプリケーションではありませんね? あらかじめ小さなプログラムを動かす枠組みがあって、その枠組みにあわせて作られたプログラムをWebページにはめ込むと、自動的にそれが認識され動くわけです。
サーバーサイドも同じです。Javaサーバーでは、その中でプログラムを動かすための仕組みが用意されています。そして、その仕組にそってプログラムを作り、組み込んでおくのです。ユーザーがそのプログラムに割当てられているURLにアクセスすると、Javaサーバーはそのプログラムを実行するようになっているのですね。
この「Javaサーバーで動く小さなプログラム」が、サーブレットです。「Webページとアプレット」を、そのまま「Javaサーバーとサーブレット」に置き換えて考えてみてください。
では、JSPというのは何か? サーブレットは、要するにJavaのプログラムですから、作るのもちょっと大変です。全部Javaでコーディングしないといけません。単に内部の処理だけでなく、クライアント(要するにWebブラウザ)に表示されるHTMLのコードも全部Javaのコードとして書かないといけないのです。HTMLをすべてprintlnで作成するところを想像してみてください。ほとんど拷問です。
そこで、「もっと手軽にサーバーサイドJavaを使えるように」ということで考えだされたのがJSPなのです。Javaサーバーが行なっていること、それは「簡単なタグを使って記述されたJavaのコードをその場で実行すること」では、実はありません。
Javaサーバーは、JSPのコードを読み込み、それをサーブレットのソースコードに変換します。HTMLのタグなども、すべてprintlnで書きだすように変換されるのです。そうして生成されたサーブレットのソースコードをコンパイルし、サーブレットを生成してそれを呼び出します。つまり、「JSPは、サーブレットだった」のですね。
同じものだといっても、ユーザーにとってはかなり違いはあります。JSPは、HTMLの中に処理を埋め込むことができますから、HTMLページにちょっと何かを追加するような場合にはとても重宝します。逆にサーブレットは、HTMLでの事細かな出力などをあまり考えないで済むようなところで役立ちます。「フロントエンド(ユーザーに表示される側)はJSP、バックエンド(サーバーで動く見えない側)はサーブレット」というように、両者をうまく使い分けるのがよいでしょう。
■サーブレットのバージョンについて
サーブレットの基本的な作り方の説明に入る前に、一つ頭に入れておいてほしいことがあります。それは「サーブレットのバージョン」です。
サーブレットも、サーバーサイドJavaのAPIとして提供されています。そしてもちろん、日々改良されており、時々バージョンアップしていろいろな機能が使えるようになります。問題は、「最新バージョンでサーブレットを作っても、使用するサーバーが対応していないと使えない」という点です。
現在、サーブレットを利用しようとしたとき、そのバージョンは明確に2つに分かれるといってよいでしょう。それは「3.0」以前と以降です。サーブレットは、3.0でかなり大きな改良が行われており、作り方などもだいぶ変わりました(基本コードは変わりありませんが……)。3.0以前は、サーブレットのコードの他に設定ファイルなどを書かないといけなかったのですが、3.0からサーブレットのコードだけ書けば、他に何もいらなくなったのです。
GAEは、実はまだ3.0に対応していません。その前の「2.5」というバージョンになっています。このため、最新バージョンに比べるといろいろ面倒なのです。――この入門は、GAEを使いますが、基本的に「JSP/サーブレットの入門」です。したがって、3.0についても触れておきたい。でも、GAEでは動かない。というわけで、「2.5ベースで作っていくが、一応3.0についても説明しておくので、もしGAEが対応したら自分で直してね」というアプローチでいきたいと思います。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
※関連コンテンツ