このセクションでは、JSP開発の基本的な構文を簡単に説明します。
目次
スクリプトプログラム
スクリプトプログラムには、スクリプト言語で有効である限り、任意の数量のJavaステートメント、変数、メソッド、または式を含めることができます。
スクリプトプログラムの構文:
<% 一部のコード %>
また、下記のように同等のXMLステートメントを記述できます。
<jsp:scriptlet>
一部のコード
</jsp:scriptlet>
任意のテキスト、HTMLタグ、JSP要素は、スクリプトプログラムの外部で作成する必要があります。
次には例を挙げます。この例はこの記事の最初のJSPの例です。
<html>
<head><title>Hello World</title></head>
<body>
Hello World!<br/>
<%
out.println("Your IP address is " + request.getRemoteAddr());
%>
</body>
</html>
ヒント:Apache TomcatがC:\apache-tomcat-7.0.2ディレクトリーにインストールされており、オペレーティング環境が正しく設定されていることを確認してください。
上記のコードをhello.jspに保存し、「C:\apache-tomcat-7.0.2\webapps\ROOT」ディレクトリに配置し、ブラウザを開いて、アドレスバーに「http://localhost:8080/hello.jsp」を入力します。実行した後、次の結果が得られます。
日本語のエンコーディングについて
ページに中国語を正常に表示する場合、JSPファイルのヘッダーに次のコードを追加する必要があります。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
次には、上記のプログラムを下記のように変更します。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Florian Studio</title>
</head>
<body>
Hello World!<br/>
<%
out.println("あなたのIPアドレスは " + request.getRemoteAddr());
%>
</body>
</html>
これで、日本語を正常に表示できます。
JSP宣言
宣言ステートメントは1つ以上の変数とメソッドを宣言でき、次のJavaコードに使用させます。JSPファイルでは、これらの変数とメソッドを使用する前に宣言する必要があります。
JSP宣言の構文:
<%! declaration; [ declaration; ]+ ... %>
また、下記に同等のXMLステートメントを記述できます。
<jsp:declaration>
一部のコード
</jsp:declaration>
プログラムの例:
<%! int i = 0; %>
<%! int a, b, c; %>
<%! Circle a = new Circle(2.0); %>
JSP式
JSP式に含まれるスクリプト言語式は、最初にStringに変換されてから、式が表示される場所に挿入されます。
式の値はStringに変換されるため、HTMLタグであるかどうかに関係なく、テキスト行で式を使用できます。
式要素には、Java言語規則に準拠する任意の式を含めることができますが、セミコロンを使用して式を終了することはできません。
JSP式の文法:
<%= 式 %>
同様に、同等のXMLステートメントを作成できます。
<jsp:expression>
式
</jsp:expression>
プログラムの例:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>初心者チュートリアル(ceodata.com.com)</title>
</head>
<body>
<p>
今日の日付: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body>
</html>
実行した結果は:
今日の日付: 2016-6-25 13:40:07
JSPコメント
JSPコメントには、コードのコメントアウトと特定のコードのコメントアウトの2つの主要な機能があります。
JSPコメントの文法:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>初心者チュートリアル(ceodata.com)</title>
</head>
<body>
<%-- この部分のコメントはWebページに表示されません--%>
<p>
今日の日付: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body>
</html>
実行した結果は:
今日の日付: 2016-6-25 13:41:26
異なる状況でコメントを使用するための構文規則:
文法 | 説明 |
<%– コメント –%> | JSPコメント、コメントの内容はブラウザに送信されず、コンパイルされません |
<!– コメント –> | HTMLコメント、ブラウザからWebページのソースコードを表示するとコメントの内容を確認できます |
<\% | 静的<%定数を表します |
%> | 静的%>定数を表します |
\’ | 属性で使用される一重引用符です |
\” | 属性で使用される二重引用符です |
JSP命令
JSP命令は、JSPページ全体に関連する属性を設定するために使用されます。
JSP命令の構文:
<%@ directive attribute="value" %>
命令タグには次の3つの種類があります。
命令 | 説明 |
<%@ page … %> | スクリプト言語、errorページ、キャッシュ要件など、ページの依存関係プロパティを定義します。 |
<%@ include … %> | 他のファイルを含めます。 |
<%@ taglib … %> | タグライブラリの定義を導入します。カスタムタグにすることができます。 |
JSPの動作
JSPの動作タグは、XML構文構造を使用してservletエンジンを制御します。ファイルを動的に挿入したり、JavaBeanコンポーネントを再利用したり、ユーザーを別のページに誘導したり、Javaプラグインに関連するHTMLを生成したりすることができます。
動作タグの文法形式は1つだけで、XML標準に準拠しています。
<jsp:action_name attribute="value" />
動作タグは基本的に事前に定義された関数です。次のテーブルに、使用可能なJSP動作タグをいくつか挙げます。
文法 | 説明 |
jsp:include | 現在のページに静的または動的リソースを含めるために使用されます。 |
jsp:useBean | JavaBeanコンポーネントを見つけて初期化します。 |
jsp:setProperty | JavaBeanコンポーネントの値を設定します。 |
jsp:getProperty | JavaBeanコンポーネントの値をoutputに挿入します。 |
jsp:forward | あるJSPファイルから別のJSPファイルへのユーザーリクエストを含むrequestオブジェクトを渡します。 |
jsp:plugin | 生成されたHTMLページにAppletおよびJavaBeanオブジェクトを含めるために使用されます。 |
jsp:element | XML要素を動的に作成します。 |
jsp:attribute | 動的に作成されたXML要素の属性を定義します。 |
jsp:body | 動的に作成されたXML要素の本体を定義します。 |
jsp:text | テンプレートデータをカプセル化するために使用されます。 |
JSP暗黙オブジェクト
JSPは、暗黙オブジェクトと呼ばれる9つの自動定義変数をサポートします。これらの9つの暗黙オブジェクトの簡単な説明を次のテーブルに示します。
オブジェクト | 説明 |
request | HttpServletRequestクラスの実例 |
response | HttpServletResponseクラスの実例 |
out | PrintWriterクラスの実例であり、結果をWebページに出力するために使用されます。 |
session | HttpSessionクラスの実例 |
application | ServletContextクラスの実例であり、アプリケーションコンテキストに関連します。 |
config | ServletConfigクラスの実例 |
pageContext | PageContextクラスの実例であり、JSPページのすべてのオブジェクトと名前空間へのアクセスを提供します。 |
page | Javaクラスのthisキーワードに似ています。 |
exception | exceptionクラスのオブジェクトであり、エラーが発生したJSPページの対応する例外オブジェクトを表します。 |
フロー制御ステートメント
JSPは、Java言語の包括的なサポートを提供します。Java APIを使用したり、JSPプログラムで条件ステートメントやループステートメントなどのJavaコードブロックを作成したりすることもできます。
条件ステートメント
if…else ブロックの場合、次の例を参照してください。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! int day = 3; %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>初心者チュートリアル(runoob.com)</title>
</head>
<body>
<h3>IF...ELSE 実例</h3>
<% if (day == 1 || day == 7) { %>
<p>今日は週末だ</p>
<% } else { %>
<p>今日は週末ではない</p>
<% } %>
</body>
</html>
実行した結果は:
IF...ELSE 実例
今日は週末ではない
次に、switch … caseブロックをご覧ください。if…elseブロックと異なります。out.println()を使用し、すべてスクリプトプログラムのラベルにパックされています。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! int day = 3; %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>初心者チュートリアル(ceodata.com)</title>
</head>
<body>
<h3>SWITCH...CASE 実例</h3>
<%
switch(day) {
case 0:
out.println("日曜日");
break;
case 1:
out.println("月曜日");
break;
case 2:
out.println("火曜日");
break;
case 3:
out.println("水曜日");
break;
case 4:
out.println("木曜日");
break;
case 5:
out.println("金曜日");
break;
default:
out.println("土曜日");
}
%>
</body>
</html>
ブラウザにアクセスして実行すると、下記の結果が得られます。
SWITCH...CASE 実例
水曜日
ループステートメント
JSPプログラムでは、Javaの3つの基本的なループタイプ(for、while、do…while)を使用できます。
forループの例をご覧ください。フォントサイズが異なる「初心者チュートリアル」を出力します。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! int fontSize; %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>初心者チュートリアル(ceodata.com)</title>
</head>
<body>
<h3>For ループの実例</h3>
<%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
<font color="green" size="<%= fontSize %>">
初心者チュートリアル
</font><br />
<%}%>
</body>
</html>
実行した後、次の結果が得られます。
上記の例をwhileループに変更します。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! int fontSize=0; %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>初心者チュートリアル(ceodata.com)</title>
</head>
<body>
<h3>While ループの実例</h3>
<%while ( fontSize <= 3){ %>
<font color="green" size="<%= fontSize %>">
初心者チュートリアル
</font><br />
<%fontSize++;%>
<%}%>
</body>
</html>
ブラウザでアクセスすると、出力結果は下記のようになります。(fontSize初期化は0であるため、1行余分に出力されます)
JSP演算子
JSPは、すべてのJavaロジックおよび算術演算子をサポートしています。
次のテーブルに、JSPの常用の演算子を、優先順位(高い→低い)に示します。
種類 | 演算子 | 結合性 |
サフィックス | () [] . (ドット演算子) | 左から右 |
前置、単行 | ++ – – ! ~ | 右から左 |
乗算除算剰余 | / % | 左から右 |
加算減算 | +- | 左から右 |
シフト | >> >>> << | 左から右 |
関係 | >>=<<= | 左から右 |
等しい/等しくない | == != | 左から右 |
ビット単位積 | & | 左から右 |
ビット単位排他 | ^ | 左から右 |
ビット単位和 | | | 左から右 |
and | && | 左から右 |
or | || | 左から右 |
三項 | ?: | 右から左 |
代入 | = +=-= *= /= %= >>=<<=&=^= |= | 右から左 |
コンマ | , | 左から右 |
JSPリテラル
JSP言語は、下記のリテラルを定義します。
- ブール(boolean):trueとfalse;
- 整数型(int):Javaと同じ;
- 浮動小数点(float):Javaの場合と同じ;
- 文字列(string):一重引用符または二重引用符で開始および終了する;
- Null:null。
コメントを残す