第3回 JSPを理解する最短コースを試そう

この連載は、Javaを利用したWebアプリケーションの開発に必要な知識を、ツールを用いて手軽に自分の手を動かしながら覚えていただくことを目的としています。ツールを使うと面倒な設定をすることなく、自分でアプリケーションを試してみることができます。いままでサーブレットのが難しいと感じていた方も、この記事を読んで自分で試すことで、本格的な学習の良いきっかけをつかんでください。(編集局)

ボーランド
新井正広
2004/6/19

 前回「第2回 サーブレットアプリケーションを実行しよう」は、Javaを利用したWebアプリケーションの最も簡単な例として、サーブレットを使ったアプリケーションの作成例をご紹介しました。今回からは、簡単なサンプルを作りながらJSP(JavaServer Pages)について学習します(JSPの詳しい説明は、連載:Tomcatを使う「JSPプログラミング」を参考にしてください)。

 前回学習したように、サーブレットはHTMLコンテンツ(文字列)を生成するJavaクラスです。これに対し、JSPでは、HTMLの中に必要に応じてJavaコードを入力することができます。

 今回以降作成するサンプルは、以下の3つです。

第3回
(今回) 
HTMLの中にJavaコードを含める書き方(5行1列の表を for 文で作成する)
第4回 第2回に作成した「○○さん、こんにちは」というサーブレットのJSP版
第5回  サーブレットとJSPを組み合わせたログインページ

 今回のサンプルでは、JSPの基本的な説明に加え、その基本的な扱い方として、HTMLの中にJavaコードを含める最も簡単な例を示します。第4回のサンプルでは、文字列を受け取ってその結果を表示する方法を示します。最後の第5回では、ちょっと高度ですが、ここまでで紹介した2つの技術を組み合わせてログイン機能を作成してみましょう。

 本連載では「開発作業を支援するツール」として、Borland JBuilder Xトライアル版を利用します。製品をインストールするだけで、アプリケーションの開発に必要なすべてのコンポーネントが自動的にインストール/設定されます。そのため、追加で何らかの作業を行うことなく、Webアプリケーションを試すことができます。

 Borland JBuilder Xトライアル版の入手はボーランドのWebサイトから申し込みが可能です。ここでトライアル版CD-ROMを申し込むと、無償でCD-ROMが郵送されてきますので、インストールガイドに従ってインストールしてください。


5行1列の表を表示するJSPを作成する

 最初のサンプルは、5行1列の表を表示するものです。ブラウザ画面上でのイメージは画面1のようになります。

画面1 作成するサンプルJSPアプリケーション(5行1列の表)を実行したところ

 また、ブラウザに送信されるHTML文字列はリスト1のようになります。

リスト1 作成するHTML(青色の部分が繰り返し処理にできる)
<html>
<head><title>表の作成</title>
</head>
<body bgcolor="#ffffff">
<TABLE border="1">
<TR><TD> 1 行目</TD></TR>
<TR><TD> 2 行目</TD></TR>
<TR><TD> 3 行目</TD></TR>
<TR><TD> 4 行目</TD></TR>
<TR><TD> 5 行目</TD></TR>

</TABLE>
</body>
</html>

 この表は、静的なHTMLだけでも表現できますが、ここではfor文を利用して繰り返しを実装します。

JSP (JavaServer Pages) とは

 前回学習したように、サーブレットはHTMLコンテンツ(文字列)を生成するJavaクラスです。これに対し、JSPでは、HTMLの中に必要に応じてJavaコードを入力することができます。リスト1の水色の部分をfor文で表現する場合、サーブレットとJSPでは、それぞれ以下のようなコードが利用できます。

リスト2 サーブレットを使用して表を作成する場合のコード(Javaコード内にHTML文字列が含まれる)
  public void doGet(HttpServletRequest request, 
HttpServletResponse response) throws ServletException, IOException {

    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    out.println("<html>");
    out.println("<head><title>表の作成</title></head>");
    out.println("<body bgcolor=\"#ffffff\">");
    out.println("<TABLE border="1>");

    // 繰り返し処理を for 文で実装する
    for (int i=1; i<6; i++) {
      out.println("<TR><TD>" + i + " 行目</TD></TR>");
    }

    out.println("</TABLE>");
    out.println("</body></html>");
  }

リスト3 JSPを使用して表を作成する場合のコード(HTML内にJavaコードが含まれる)
<%@ page contentType="text/html; charset=Shift_JIS" %>
<html>
<head><title>表の作成</title></head>

<body bgcolor="#ffffff">

<TABLE border="1">

<!-- 繰り返し処理を for 文で実装する -->
<%  
    for (int i=1; i<6; i++) {
%>


<TR><TD> <%= i %> 行目</TD></TR>

<%
    }
%>


</TABLE>
</body>
</html>

JSPタグの種類

 JSPには、通常のHTMLでは見られないいくつかの特殊なコードが見られます。このサンプルでは、3種類あるので、それぞれ確認してみましょう。

ディレクティブ
<%@ page contentType="text/html; charset=Shift_JIS" %>

 <%@ XXXXXX %> という表記を利用することによって、JSPを処理するWebコンテナへの指示を記述できます。ここでは、作成するJSPページが contentTypeがHTMLであり日本語Shift JISを使用することをWebコンテナに指示されています。

スクリプトレット
<%
  for (int i=1; i<6; i++) {
%>

 および、

<%
  }
%>

 JSPでは、<% %> という特殊なタグの中に任意のJavaコードを挿入することが可能です。ここでは、for文を利用して、5回の繰り返し処理を定義しています。

<%= i %>

 任意の式を評価した結果を文字列として HTML 中に挿入するときは、その式を <%= %> で囲みます。このサンプルの場合は、for 文で使用する変数 i の内容が文字列として出力されます。

 このような要素を含んだJSPページは、実行時にはサーブレットに変換され、サーブレットと同じように振る舞います。サーブレットとの違いは、これらの作業はTomcatなどのWebコンテナで自動的に実行されることだといえるでしょう。具体的には、Webコンテナは、図1のようにJSPファイルを処理します。JSPは、自動的にサーブレットに変換されて、クラスファイルにコンパイルされた後、実行されます。

図1 JSPが実行される順序

 これらの作業は、少し時間がかかりますが、2度目以降のアクセスに対しては、サーブレットと同じように動作しますので、パフォーマンス上の心配をする必要はありません。

訂正のお知らせ

読者からの「表が表示されない」、という貴重なご指摘によりリスト1〜3において、TABLEタグに「border="1"」を追加させていただきました。
内容について正確を期せなかった点、読者の皆様にお詫び申し上げます。

1/2

 INDEX

第3回 JSPを理解する最短コースを試そう
Page1
5行1列の表を表示するJSPを作成する
JSPとは
JSPタグの種類
  Page2
JSPの作成
Webアプリケーションのデバッグ




「ツールでトライ!初めてのWebアプリケーション」記事一覧




Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間