検索
連載

サーブレット/JSPの役割を理解する基礎から学ぶサーブレット/JSP(1)(2/4 ページ)

本連載では、JSP&サーブレットをシステムデザインという観点からご紹介していくことにします。基本的な構文から、JSP/サーブレット/JavaBeansを適所適時に使い分けていく考え方、そして「必然性」までを実践的な見地から体感していただければ幸いです。

Share
Tweet
LINE
Hatena

JSP(JavaServer Pages)の役割

 サーブレットは、なるほど、Javaベースでサーバサイドアプリケーションを構築するための強力なアーキテクチャです。しかし、上記のコードをご覧になってもお分かりのように、あくまでJavaのクラス構文をベースとした「本格的な」プログラムでもあります。

 もちろん、Javaに精通したプログラマの方ならば、なんら抵抗も覚えないのかもしれませんが、おそらくは初心者の方のほとんどは「難しそう」と感じられたのではないでしょうか。

 そうした感覚の問題だけではありません。サーブレットでは、プログラムの実行の結果として、HTMLのソースを出力していますので、単なる静的な出力を行う場合にもいちいちprintln命令(メソッド)を記述しなければなりません。静的なテンプレート中心のケースでは、その繰り返しがあまりにも冗長であれば、迂遠にも感じられるのではないでしょうか。

 冗長であるということは、それだけ開発や修正に際して面倒くさい(=開発・保守性に劣る)ということであり、また、それだけミスも多くなるということでもあります(ですから、私はプログラムの真髄とは「いかに楽をするか」にあるのだと思います)。それだけではありません。コードを修正するということは、修正の都度、コンパイルと配置(Deploy)の作業が必要であるということでもあり、それは常にプログラマであるあなたの肩にのしかかってくるのです。デザイナーや編集者は、常に掲載内容をプログラマに伝え、実際の修正作業は常にプログラマが行わなければなりません(そんなことくらい、デザイナーや編集者に教え込めばいい、なんていわないでください。全体の運用として、そのように教育をすることがどれだけ難しいか、やってみればすぐに分かるはずです)。

 仕事は、すべてプログラマの元に集まってきてしまうのです。そこで、考案されたのが、ここでお話しする「JSP」技術だったのです。サーブレットが「サーバサイドのアプレット(小さなアプリケーション)」であったのに対し、JSPは「JavaServer Pages」というその名のとおりサーバで動作する「ページ」です。

 くどくどしく説明するよりも、まずはコードを見ていただいた方が早いでしょう。リスト2は、上のサーブレットクラスと全く同じ動作をするJSPのコードです。

リスト2 HelloWorld.jsp
<html>
 <head>
 <title>Hello, World!!</title>
 </head>
 <body>
 <% out.println("<p>Hello,World!!</p>"); %>
 </body>
 </html>

 いかがですか? サーブレットがあまりに生々しい(とっつきにくい)Javaのコードであったのに対し、JSPがいかにも見慣れたHTMLであることは一目瞭然です。そう、JSPはHTMLのソースをベースとして、<%〜%>でJavaの断片的なコードを埋め込むことができる技術です。これならば、HTMLさえ知っていれば(あるいは知らなくともIDE(Integrated Development Environment))のようなGUIツールを活用してもよいかもしれません)、誰でも編集できそうな気がしてきます。

 しかも、JSPにはもっとすごいことがあります。それは、JSPがコンパイルを必要としないという点です。サーブレットが、その都度、「.java」ファイルをjavacコマンドでコンパイル、「.class」ファイルを生成しなければならないのに対し、JSPは「.jsp」ファイルをそのままWebサーバに配置すれば、それだけで動作してしまいます。どうですか、すごいと思いませんか。

 つまり、実行エンジン(本連載ではTomcatを使用します)がJSPファイルを自動的にサーブレットへと変換し、コンパイルを行ったうえで実行までしてくれるのです。それだけではありません。コンパイルした結果はそのまま一時ファイルとして保持され、2回目以降の実行に使用されますので、パフォーマンス上はサーブレットと同等のレベルを保障するのです。

 開発も容易、メンテナンス性にも優れ、パフォーマンスも決してサーブレットに劣らない、なんて素晴らしい技術なのでしょう!

JSPでは、HTMLに埋め込まれた断片的なJavaコードが動的に処理されます


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る