Servlet/JSP 基礎編07 JSP基本編

JSPとは

JSPについては、最も初めのServlet/JSP 基礎編01でも話しましたが、JSPファイルとは、HTMLの中にJavaプログラムを記述したものである。
実行のされ方は、ユーザがJSPファイルを開くと、アプリケーションサーバJSPからサーブレットが生成され、コンパイル、最終的にはサーブレットプログラムとして実行される。つまり、最初の処理以外は、サーブレットと全く同じ処理ということである。

・メリット

JSPサーブレットを比べてのメリットは大きく3点あると考えている。

1点目は、実行の容易さである。サーブレットの場合は、ソースのコンパイル、サーバの再起動が毎回必要になったが、JSPでは、ソースをエディタ上でセーブしておけば、ブラウザで確認できる。理由としては、アプリケーションサーバJSPコンパイルやその他の処理を自動で行ってくれるためである。

2点目は、修正の容易さである。これは1点目とほぼ同じ利点であるが、サーブレットは修正を加えると、再びコンパイル、サーバをリロードをしなければならない。しかし、JSPは、ブラウザの更新で修正をしてくれる。

3点目はHTMLの記述に適している。これは基礎編01でも話したことであるが、HTMLの出力が多いとき、Javaプログラムの中にHTMLを記述するサーブレットでは、毎回、printlnメソッドを使用しなければならない。逆にJSPでは、HTMLの中にJavaプログラムを記述する形であるから、HTMLを出力する場合は普段のHTMLファイルと同じような書き方でよい。それが利点である。

作成するプログラム

今回の記事では、シンプルに文字をブラウザに表示するプログラムと、変数を用いたプログラムの二つを作成したいと思う。

プログラム1

ブラウザの画面に「Hello」「こんにちは」と表示するプログラムを作成する。

<p>タグを使うだけでよい。

このプログラムでは、JSPの特徴を見ていただきたいと思う。

下記がそのプログラムである。

<%@page contentType="text/html; charset=UTF-8" %>

<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Servlet/JSP Samples</title>
</head>
<body>

<%-- メッセージの出力 --%>
<p>Hello!</p>
<p>こんにちは</p>

</body>
</html>

 まず、何よりも気になるのが、1行目だろう。

これは、pageディレクティブという。JSPページに関する設定を行うことができる。

「contentType」でMIMEタイプと文字のエンコーディングを指定している。これにより、レスポンスをhtml形式で返すこと、文字化けを未然に防ぐことが可能となる。

次に、緑色のところが気になると思う。これは、見てもらった通り、コメント化である。「<%--」と「--%>」で囲めば、間の文字はコメントとなる。

あとは、<p>タグで表示したい文字を書けば終わりである。

ブラウザの結果が下記である。

 

Hello!

こんにちは

 

しっかりと表示されている。

プログラム2

二つ目のプログラムは変数を用いるものとする。しかし、ただのHTMLファイルでは、変数を扱うことはできないので、JavaプログラムをJSPファイルに書き込まなければならない。

Javaプログラムを記述するには、スクリプトレットという機能を使う。スクリプトレットは「<%」と「%>」で囲めばよい。

このプログラムでは、メソッドの宣言と変数の扱いを学んでいただきたい。

<%@page contentType="text/html; charset=UTF-8" %>
<%@include file="../header.html" %>

<%!
int add(int a, int b){
    return a+b;
}
%>

<p>1+2=<%=add(1,2%></p>
<p>3+4=<%=add(3,4%></p>

<%@include file="../footer.html" %>

 2行目では、「includeディレクティブ」を使用している。その名の通り、ファイルをインポートすることができる。このプログラムでは、header部分とfooter部分をインポートしている。これにより、プログラムをかなりシンプルにできる。

次に先ほど説明したスクリプトレットである。「!」がついているが、これは否定の意味ではなく、宣言の意味である。これを宣言することで、別のブラウザからアクセスしても、利用することができる。

次に、「<%=add(1,2%>」の部分であるが、「=」を入れることで、式として扱われる。つまり、addメソッドの返り値がここに入る。

実行結果は以下の通りになった。

 

1+2=3

3+4=7

 

<p>タグで囲まれている部分で、返り値が当てはまっている状態で表示されていることが分かる。

おわりに

今回だけでは、スクリプトレットのことを完全に理解出ない人もいると思いますが、今後もスクリプトレットを利用したJSPを作成していくので、よろしくお願いいたします。

次回は、JSPによるリクエスト処理について紹介したいと思う。