
新人SEのためのJava講座
Tomcatを使う「JSPプログラミング」
三谷純
タイムインターメディア
2001/5/11
| 本記事は2001年に執筆されたものです。JSP全般の最新情報は@IT キーワードINDEXの「JSP/Servlet」を、Tomcat全般の最新情報は@IT Java Solutuionのカテゴリ「アプリケーションサーバ(Tomcatなど)」をご参照ください。 |
| やり直し「JSPとTomcat」 途中までかじったが挫折した。スキルチェンジしたい!という読者のために、Tomcatの最新バージョンを使いながらJSPを基礎から解説していく 「Java Solution」フォーラム 2007/4/19 |
||
| 第1回 JSPの特徴を理解する |
|
Javaという言語がサンマイクロシステムズによって世に出されてからずいぶんたちました。Javaが登場した当時、Javaといえばアプレットと同義にとらえられ、ブラウザ上で動作するアニメーションやゲームを作成するための技術として世の中に広まっていきました。 |
|
今回の内容 |
|
|
第1回目の今回は、「JSPとはどのようなものか?」ということを、ほかの類似技術と対比しながら説明していきます。
百聞は一見にしかずといいますから、まずは具体的なJSPのプログラム例を見てみましょう。次のプログラムは、「Hello World!」という文字を表示するためのHTMLファイルを生成するJSPプログラムの例です。
1: <html> |
一見普通のHTMLに見えますが、6〜9行目にHTMLでは見られないタグ「<% %>」とJava言語らしき記述がありますね。これがJSPにおけるプログラムの記述方法になります。上記のプログラムを実行した結果は次のようになります。
![]() |
| JSPによる文字列の出力 |
実行結果から分かるように、<% %>で記述されていた内容が"Hello World!"という文字列に置き換わっています。<% %>内でJavaのプログラムが実行され、文字列が出力されたことが分かりますね。
それでは、このJSPの特徴を理解するために、既存の技術とJSPを比較し、その違いを見ていきましょう。
■JSPとJavaScriptの比較
上記の Hello World! を表示するJSPと同じプログラムをJavaScriptで記述すると、次のようになります。
1: <html> |
JSPで記述したプログラムと非常に似ていますね。 しかしながら、「JSPのプログラムはサーバが解釈して実行する」のに対し、「JavaScriptはクライアントのブラウザが解釈して実行する」という点が大きく違います(図1)。
![]() |
| 図1 JavaScriptとJSP の実行形態の違い |
ただ、どちらも記述の構成が非常に似ているので、誤解を恐れずに書けば「JSPはサーバが実行するJavaScriptのようなもの」といえます。
(実際には、最初にJSPのプログラムを含むページの表示が要求された段階で、JSPのプログラムがサーバ側でコンパイルされ、そして実行されます。プログラムを書く立場から見ると、明示的にコンパイルの作業をする必要がないため、サーバが実行するJavaScriptのようなもの、という見方をすることができます)■JSPとアプレットの比較
アプレットもJavaScriptと同様に、クライアントのブラウザが解釈して実行します。
(正確には、クライアントがダウンロードしたクラスファイルをブラウザ上の JavaVM というJava実行プログラムが解釈して実行します)
サーバはクラスファイルを提供するだけで、その解釈と実行には関与しません。サーバ側では処理を行わないので、実際の動作はクライアント側に依存してしまいます。例えばブラウザのバージョンが異なる場合に動作が異なるなどの問題が生じることがあります。
JavaScriptやアプレットは、サーバ側がプログラムを提供し、それをクライアント側が処理をして実行する形態です。この形態は、クライアント側で処理が完結するゲームやアニメーションには向いていますが、サーバにあるデータベースにアクセスしたり、サーバ側に備わった特定の機能を使いたい場合には適していません。
JSPはサーバ側でプログラムを実行してページを生成するので、サーバ側の豊富な資源を使えます。また、生成したページは従来のHTMLファイルとしてクライアントに提供されるので、例えば携帯電話などのようなJavaの実行環境のない環境においても、HTMLさえ解釈できればJavaのテクノロジのメリットを享受できるという利点があります。
■JSPとCGIの比較
CGIはJSPと同様にサーバ側でプログラムを実行する仕組みで機能します。クライアントからのリクエストごとにサーバがプログラムを実行し、その結果をクライアントに返します。CGIのプログラム言語は特定のものに限られているわけではなく、サーバが実行できるものであれば、C言語でもPerlでも、もちろんJavaのプログラムであっても構いません。
しかし、CGIはアクセスがあるたびにサーバが新しいプロセスを起動するので、オーバーヘッドとリソースの消費によるパフォーマンスの低下が避けられないというデメリットがあります。
これに対し、JSPはJSPコンテナと呼ばれるJSP実行プログラムが一度起動されていれば、その内部で実行されるので、リソースの消費が少なく効率的だというメリットがあります(図2)。
![]() |
| 図2 CGIとJSPの実行形態の違い |
ASPはActive Server Pagesの略で、マイクロソフトのWebサーバであるIIS(Internet Information Server)上でインターネット・アプリケーションを作るための言語とそのフレームワークです。ASPは、マイクロソフトのVBScriptという言語を拡張したものを使って、サーバ側のアプリケーションを記述します。
“Hello World!”を表示するJSPと同じプログラムをASPで記述すると、次のようになります。
1: <html> |
JSPで記述したプログラムと非常に似ていますね。プログラムを記述するためのタグ <% %>も同じですし、その構成もJSPと似ています。
また、リクエストからページの生成までの仕組みも、ASPとJSPとでは大きな違いがありません。どちらもサーバ側で処理されるプログラムをHTMLファイルに埋め込むような形で記述します。
唯一大きな相違点として、ASPはマイクロソフト製品を使った環境でしか動作しませんが、JSPはJavaのマルチプラットフォーム対応という優れた性質を受け継いでいるため、Linux 環境でも Windows 環境でも使用することができます。また、JSPでは既存のJavaの技術を有効に使用できるメリットがあります。
■JSPとサーブレット
今回は詳しい説明を行いませんが、JSPを勉強するにあたってサーブレットの存在を無視することはできません。サーブレットで、上記の“Hello, World!”という文字を表示するHTMLを出力するプログラムを記述すると次のようになります。
1: import java.io.*; |
HTMLの中にプログラムコードが埋め込まれているJSPと比べ、Javaプログラマーの方にはこちらの方が自然な感じがするでしょう。しかしながら、わずか“Hello, World!”という文字を表示するためだけのプログラムにしては少し仰々しすぎるように思えます。
クライアント側で受け取るものは、HTML言語で記述されたテキストデータであるため、それを出力するために、out.println という関数が何回も呼ばれることになってしまいます。HTMLの出力を少し変更するのにもコードの変更が必要で、そのたびにコンパイルを行うことになってしまいます。画面のデザイン作業とプログラムのコーディング作業を切り離すことができず、大変不便です。
この不便さを解決するために考案されたものがJSPだということができます。JSPは、最初に表示要求が出された時点で、サーバ側で一度javaファイルに変換され、それがコンパイルされて実行されます。そのため、内部的にはやはり文字列を出力するための関数が何回も呼ばれるようになるのですが、プログラムを書く人間がそれを意識せずに画面デザインに関するHTMLとロジック部分のプログラムを分けて考えられるため、JSPの方が効率的にWebサイトを構築できるといえます。
■JSPの特徴をまとめる
さて、第1回目の今回はJSPの特徴についてまとめてみました。これらをまとめると次のようになります。
- JSP はサーバが実行するプログラムである
- <% %> タグを用いることで、HTMLの中にプログラムを埋め込むことができる
- CGI と異なり、プロセス起動のオーバーヘッドがない
- Java の文法で記述でき、Java の利点を生かしたシステム構築ができる
今回はJSPはどのようなものか? ということが漠然とでも理解していただけたら幸いです。次回はJSPを用いたプログラミングを行うために必要な環境構築の方法について説明します。
Tomcatを使う「JSPプログラミング」 バックナンバー
| 連載記事一覧 |
ホワイトペーパー(TechTargetジャパン)
- Webの表示速度を遅くする「SSLハンドシェイク」とは (2010/2/9)
安全性を担保しようとWebページにSSLを適用すると、負荷の高い処理が実行される。速度と安全性は両立できるのか? - クラウド活用「雲活」のために押さえるべき39のポイント (2010/2/2)
活用するべきサービスか否か、クラウドの利点・問題点、クラウドプラットフォーム提供企業になるための条件、開発者がするべきことに分けて紹介 - 再利用性の高いクラス作成に重要な“アクセス制御” (2010/1/28)
Javaのアクセス修飾子public、private、protectedや、Eclipseで簡単に作れるアクセサメソッドgetter、setterについて解説 - DB設計の神ツール「ERMaster」なら、ここまでできる (2010/1/21)
直感的なUIに、カスタマイズ可能な、Excel出力のテーブル定義書、辞書機能など多機能なERモデリングの無料Eclipseプラグインです
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | 企業の仮想化に足りない“発想”とは? 仮想化運用管理のキモは意外なところに! New! |
| ◆ | 操作もマニュアルも分かりやすい! ユーザー視点で開発されたPC管理ツール New! |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |

| ◆ | セキュリティを知り尽くす上野氏が登壇! @ITメールソリューションLive! in Tokyo |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
| ◆ | 世界に通用するストレージの作り方とは? 製品に込めた思いを富士通の開発者に聞く |

| ◆ | OSSで手間も時間も、障害も減った―― 「マピオンの事例」オープンソース活用法 |
| ◆ | 「ノートPCの持ち出し禁止」で大丈夫? 情報漏えいを防ぐ管理手法とインフラは? |
| ◆ | 1日の処理を1秒に――MySQLの達人が語る 「コスト削減」できるチューニング |

| ◆ | ドキュメント作成を自動化して、SEの作業 効率を大幅アップ! Visio 2007の魅力 |
| ◆ | 急速に広がるHyper-Vでのサーバ仮想化 そのベストプラクティスをデルが解説 |
| ◆ | @IT主催セミナーで語られた、「担当者に 求められるセキュリティ対策」をレポート |

| ◆ | @IT「Windows 7」 特設サイトオープン! 最新情報・移行ノウハウを公開しています |









