JSPスクリプト事始

 JSPもPHPと同様、HTML文書に埋め込んで記述するサーバーサイドスクリプトです。 JSPの記述言語はJavaなので、PHPにおける 「PHP言語」のような新たな記述言語を覚える必要はないのですが、 PHP言語に対するPHPエンジン(実行プログラム)が今のところ世界で一種類しかないのに比べ、 JSPエンジン(JSPコンテナ) は市販の製品やTomcatのようなオープンソースのものなどたくさんあり、 若干環境に影響される面があります。 これからご紹介するスクリプトは全て Jakarta Tomcat 4.0.2b1 で動作確認しています。日本語はeuc-jp環境です。
 それではまず、「Hello, World」を。 それだけだと退屈なので、少し欲張って現在の日時を表示させてみます。

<%@ page language="java" contentType="text/html;charset=euc-jp" %>
<%@ page import="java.util.*" %>
<html><head><title>JSPで時刻を表示するサンプル</title></head>
<body bgcolor="white">

<%!
private String getDateTimeString(){
    GregorianCalendar cal = new GregorianCalendar();

    int year   = cal.get(Calendar.YEAR);
    int month  = cal.get(Calendar.MONTH) + 1;
    int day    = cal.get(Calendar.DAY_OF_MONTH);
    int hour   = cal.get(Calendar.HOUR_OF_DAY);
    int minute = cal.get(Calendar.MINUTE);
    int second = cal.get(Calendar.SECOND);

    String s = String.valueOf(year) + "-" +
    ((month < 10) ? "0" : "") + String.valueOf(month) + "-" +
    ((day < 10) ? "0" : "") + String.valueOf(day);

    s += " " + ((hour < 10) ? "0" : "") + String.valueOf(hour) + ":" +
    ((minute < 10) ? "0" : "") + String.valueOf(minute) + ":" +
    ((second < 10) ? "0" : "") + String.valueOf(second);

    return s;
}
%>
<h1>Hello, JSP World!</h1>
<%
    out.println("只今の時刻は、" + getDateTimeString() + "です。");
%>
</body></html>

 JSPのコードは<%〜%>または<%!〜%>で囲んだ間に書きます。 JSPを全く知らないつもりになって、ものすごく省略して説明すると、 <%!〜%>の中には関数(メソッド)の定義や変数の定義など、 このJSPがサーブレットに化けた瞬間 (通常、Tomcatが起動して最初にこのページがロードされるとき) だけ実行されればよい処理を、 <%〜%>の中には、ページがロードされるたびに実行されるべき処理を書きます。
 JSPコードの中で、HTTPストリームに文字列を書き出すには、 典型的にはout.printlnメソッドを使います。 outは幾つかあるJSPの組み込みインスタンス変数のひとつで、 応答HTTPストリームへのデータの書き出しをつかさどるクラスJspWriter のインスタンスです。
 Javaコードの中で、java.util.なんとかとか、java.io.なんとかとかの標準クラスを使いたい場合には、 page importという疑似命令(ディレクティブ) を使います。ここで、Javaソースコードのimport文のようにクラスを指定します。 パッケージに含まれる全てのクラスをインポートしたい場合には*を使えます。 また、複数のクラスをインポートしたい場合にはカンマで区切って並べることができます。 この例では、標準クラス java.util.GregorianCalendar を使っています。


JSPのコメント

 HTMLのコメントは

<!-- コメント -->
と書きますが、同様にJSPのコメントは
<%-- コメント --%>
と書きます。HTMLのコメントはHTML文書の一部となってクライアントに送信されますが、 JSPのコメントはクライアントには見えません。


インクルードと再利用

 JSPでもPHPと同様、よく使うロジックなどを別ファイルに固めておき、 各JSPスクリプトからこれを呼び出す、ということが可能です。 上の例では、現在の日時を文字列にして返す処理が、 Javaでは若干たくさんのコードを書かなければならず面倒に思われますね。 そこで、この部分を共通ファイルに出してしまいます。 この共通ファイルには本来HTMLの部分とJSPの部分を混在させて書くことができるのですが、 どちらか片方しかなくてももちろん構いません。 HTMLだけのインクルードファイルを作ることも、 JSP(Javaコード)だけのそれらを作ることも可能です。
 ただし、純粋なJavaコードの再利用のためには、 インクルードファイルを使うよりも、JavaBeans の形にしたほうが、開発の再利用性だけでなくサーバの性能向上にもつながるので、 この例はあまり適した例ではありません。 ちょっとその点だけ注意が必要です。JavaBeansについては後のページで出てきます。

<%!
private String getDateTimeString(){
    GregorianCalendar cal = new GregorianCalendar();

    int year   = cal.get(Calendar.YEAR);
    int month  = cal.get(Calendar.MONTH) + 1;
    int day    = cal.get(Calendar.DAY_OF_MONTH);
    int hour   = cal.get(Calendar.HOUR_OF_DAY);
    int minute = cal.get(Calendar.MINUTE);
    int second = cal.get(Calendar.SECOND);

    String s = String.valueOf(year) + "-" +
    ((month < 10) ? "0" : "") + String.valueOf(month) + "-" +
    ((day < 10) ? "0" : "") + String.valueOf(day);

    s += " " + ((hour < 10) ? "0" : "") + String.valueOf(hour) + ":" +
    ((minute < 10) ? "0" : "") + String.valueOf(minute) + ":" +
    ((second < 10) ? "0" : "") + String.valueOf(second);

    return s;
}
%>

ファイル名は拡張子を含めて何でも構いません。 ここでは「hello-included.inc」と名づけて、 本来のJSP文書と同じディレクトリに保存します。

 次に、上のファイルをインクルードするJSP文書の例です。

<%@ page language="java" contentType="text/html;charset=euc-jp" %>
<%@ page import="java.util.*" %>
<html><head><title>JSPで時刻を表示するサンプル</title></head>
<body bgcolor="white">
<%@ include file="hello-included.inc" %>
<h1>Hello, JSP World!</h1>
<%
    out.println("只今の時刻は、" + getDateTimeString() + "です。");
%>
</body></html>

このように、よく使う部分だけを別ファイルに切り離すことで、 HTML文書のヘッダ部などの共通化を図ることが可能です。

Server Side Java Index Top

(first uploaded 2001/12/24 last updated 2003/08/15, KOUKEN HEIJIMA)

テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル