JSP構文

このセクションでは、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:useBeanJavaBeanコンポーネントを見つけて初期化します。
jsp:setPropertyJavaBeanコンポーネントの値を設定します。
jsp:getPropertyJavaBeanコンポーネントの値をoutputに挿入します。
jsp:forwardあるJSPファイルから別のJSPファイルへのユーザーリクエストを含むrequestオブジェクトを渡します。
jsp:plugin生成されたHTMLページにAppletおよびJavaBeanオブジェクトを含めるために使用されます。
jsp:elementXML要素を動的に作成します。
jsp:attribute動的に作成されたXML要素の属性を定義します。
jsp:body動的に作成されたXML要素の本体を定義します。
jsp:textテンプレートデータをカプセル化するために使用されます。

JSP暗黙オブジェクト

JSPは、暗黙オブジェクトと呼ばれる9つの自動定義変数をサポートします。これらの9つの暗黙オブジェクトの簡単な説明を次のテーブルに示します。

オブジェクト説明
requestHttpServletRequestクラスの実例
responseHttpServletResponseクラスの実例
outPrintWriterクラスの実例であり、結果をWebページに出力するために使用されます。
sessionHttpSessionクラスの実例
applicationServletContextクラスの実例であり、アプリケーションコンテキストに関連します。
configServletConfigクラスの実例
pageContextPageContextクラスの実例であり、JSPページのすべてのオブジェクトと名前空間へのアクセスを提供します。
pageJavaクラスの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。
Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です