連載
» 2006年08月01日 00時00分 公開

やり直し「JSPとTomcat」(5):JSPのスクリプトとMVC

Javaを途中までかじったが挫折した。やはりJavaプログラマにスキルチェンジしたい!という読者のために、Tomcatの最新バージョンを使いながらJSPを基礎から解説していく。(編集局)

[吉川和巳,有限会社スティルハウス]

JSPのスクリプト

 前回説明したとおり、JSPでは、以下の3種類のJSPタグを記述できます。

  • ディレクティブ
  • スクリプト
  • アクション

 ディレクティブは、JSPページにまつわるさまざまな指示(directive)をWebコンテナへ伝えるJSPタグです。前回は、「pageディレクティブ」を用いてJSPページの文字コードをWebコンテナに指示する例を紹介しました。引き続き今回は、JSPにおけるスクリプトの概要や位置付けについて説明します。

 前回、以下のようなサンプルコードを取り上げました。

<%@ page contentType="text/html; charset=Windows-31J" %>
<html>
  <head>
    <title>JSP Sample</title>
  </head>
  <body>
    こんにちは、今の日時は <%= new java.util.Date() %> です。
  </body>
</html>

 このコードでは、以下の部分において、JSPのスクリプトと呼ばれる文法を用いています。

<%= new java.util.Date() %>

 ご覧のとおり、スクリプトでは、Javaコードを直接記述できます。このJavaコードによってコンテンツを動的に生成し、HTMLページに挿入する仕組みです。上述のコード例では、現在の日時を表すDataオブジェクトを生成し、Webブラウザに文字列として出力しています。

 JSPでは、こうしたスクリプトとして、以下のようなタグが利用できます。

タグと使用例 名称 機能
<% Date d = new Date(); %> スクリプトレット Javaコードの実行
<%= 1 + 2 %> Java式の実行とWebブラウザへの出力
<%! Date d = null; %> 宣言 Javaフィールドまたはメソッドの宣言
<%-- コメント --%> コメント コメントの記述
表 JSPで利用できるスクリプトのタグ

 これらの中でも、「<% ... %>」という記法によりJavaコードを記述する「スクリプトレット」は、初期のJSP開発では最も広く用いられたタグです。例えばデータベース検索機能やショッピング・カート機能などのビジネス・ロジック(業務処理)をスクリプトレットで記述する方法がよく使用されていました。

スクリプトからMVCへ

 こうした「Webページに埋め込まれたスクリプトでビジネス・ロジックを記述する」という開発スタイルは、PHPやASPといったほかのサーバサイド・スクリプトとも共通するものです。しかしこの方法は、JSP開発の現場に混乱を招く結果となりました。なぜならHTMLコンテンツとJavaコードが1つのJSPページに混在するために、以下のようなデメリットを生じるからです。

  • Javaコードのメンテナンス性や再利用性が低くなる
  • Java開発ツールを活用できず、生産性が低くなる
  • Webデザイナーとプログラマーの分業が難しい

 そのため現在のJSP開発では、これらのスクリプトはあまり利用されていません。その代わりとして、Webアプリケーション全体の機能を以下のような役割分担で実装する方法、いわゆる「MVC(Model View Controller)モデル」が広く用いられています(MVCモデルについて詳しくはJava Solution FAQを参照)。

  • ビジネス・ロジックの実行……Javaクラス(Model)
  • ビジネス・ロジックの実行結果のHTML表示……JSPページ(View)
  • 全体の制御……サーブレット(Controller)
図1 MVCモデルの例 図1 MVCモデルの例

 このように、MVCモデルにおけるJSPページの役割は「ビジネス・ロジックの実行結果のHTML表示」にあります。こうしたMVCモデルの普及とともに、WebアプリケーションをJSP単体で実装する例は少なくなり、MVCモデルの枠組みをあらかじめ実装した「MVCフレームワーク」の導入が一般的となりました。MVCフレームワークの代表例としては、以下のようなものがあります。

  • Struts
  • JSF
  • Turbine

 これらMVCフレームワークの機能や特徴についての説明はほかに譲るとして、ここでは「スクリプトはなるべく使用しない」「Webアプリケーション開発ではMVCフレームワークの導入が欠かせない」という点だけ押さえておいてください。これらの事情から、本連載では、スクリプトについての詳しい説明は省略したいと思います。

 ここまでの説明によって、JSPページは実のところ「処理結果のHTML表示」のための手段であることが理解できたと思います。では具体的に、スクリプトを使わずに、どのような方法で処理結果をHTML表示するのでしょうか。次回は、その答えである「アクション」について説明します。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。