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.2webappsROOT ディレクトリに配置し、ブラウザを開いてアドレス バーに http://localhost:8080/hello.jsp と入力します。実行後、次の結果が得られます:

jsp_hello_world.jpg

中国語のエンコードの問題

ページに中国語を通常どおり表示したい場合は、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>php中文网(php.cn)</title>
</head>
<body>
Hello World!<br/>
<%
out.println("你的 IP 地址 " + request.getRemoteAddr());
%>
</body>
</html>

のプログラムを修正して中国語が正常に表示されるようにします。


JSP 宣言

宣言ステートメントでは、後続の Java コードで使用する 1 つ以上の変数とメソッドを宣言できます。 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 に変換され、式が出現する場所に挿入されます。

式の値は文字列に変換されるため、HTMLタグかどうかに関係なく、テキスト行で式を使用できます。

expression 要素には、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>php中文网(php.cn)</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>php中文网(php.cn)</title>
</head>
<body>
<%-- 该部分注释在网页中不会被显示--%> 
<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 つの命令タグがあります:

命令説明
<%@ ページ ... %> スクリプト言語、エラー ページ、キャッシュ要件など、ページの依存関係属性を定義します。
<%@ include ... %> 他のファイルが含まれています
<%@ taglib ... %> カスタムタグとなるタグライブラリの定義を紹介します

JSP 動作

JSP 動作タグは、XML 構文構造を使用してサーブレット エンジンを制御します。ファイルを動的に挿入したり、JavaBean コンポーネントを再利用したり、ユーザーを別のページに誘導したり、Java プラグインに関連する HTML を生成したりできます。

動作タグの構文形式は 1 つだけであり、XML 標準に厳密に準拠しています。

<jsp:action_name attribute="value" />

動作タグは基本的にいくつかの事前定義された関数です。 次の表に、使用可能な JSP 動作タグの一部を示します。

説明 jsp:useBean jsp:setProperty jsp:getProperty jsp:forward jsp:plugin jsp:element jsp:attribute jsp:body jsp:text

JSP 隠しオブジェクト

JSP は、隠しオブジェクトとして知られる 9 つの自動的に定義された変数をサポートしています。これら 9 つの非表示オブジェクトの概要を以下の表に示します。 リクエストのインスタンス

jsp:include 現在のページに静的または動的リソースを含めるために使用されます
JavaBean コンポーネントを見つけて初期化します
JavaBeanコンポーネントの値を設定します
JavaBean コンポーネントの値を出力に挿入します
ユーザーのリクエストを含むリクエスト オブジェクトをある JSP ファイルから別の JSP ファイルに渡します
生成された HTML ページにアプレットと JavaBean オブジェクトを含めるために使用されます
XML 要素を動的に作成します
動的に作成された XML 要素の属性を定義する
動的に作成される XML 要素の本文を定義します
テンプレートデータをカプセル化するために使用されます
HttpServletRequest class レスポンスのインスタンス class out 結果を Web ページに出力するために使用される クラスのインスタンス セッションクラスのインスタンス アプリケーションコンテキストに関連する applicationServletContextServletConfigPageContext ExceptionException
HttpServletResponse
PrintWriter
HttpSession
クラスのインスタンス config
classのインスタンス pageContext
クラスのインスタンス。JSP ページのすべてのオブジェクトと名前空間へのアクセスを提供します
ページ Java クラスの this キーワードに似ています
クラスのオブジェクトは、エラーが発生した JSP ページ内の対応する例外オブジェクトを表します

制御フロー ステートメント

JSP は Java 言語を完全にサポートしています。 JSPプログラム内でJava APIを使用でき、判定文やループ文などの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>php中文网(php.cn)</title>
</head>
<body>
<h3>IF...ELSE 实例</h3>
<% if (day == 1 | day == 7) { %>
      <p>今天是周末</p>
<% } else { %>
      <p>今天不是周末</p>
<% } %>
</body> 
</html>

実行後、次の結果が得られます:

IF...ELSE 实例
今天不是周末

次に、if…else とは大きく異なる switch…case ブロックを見てみましょう。 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>php中文网(php.cn)</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 实例

星期三

ループ ステートメント

Java は JSP プログラムで使用できます。for、while、do...while の 3 つの基本的なループ タイプです。

for ループの例を見てみましょう。次の出力は、フォント サイズが異なる「php Chinese website」です:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%! int fontSize; %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<h3>For 循环实例</h3>
<%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>
   <font color="green" size="<%= fontSize %>">
    php中文网
   </font><br />
<%}%>
</body> 
</html>

実行後、次の結果が得られます:

7B4B85CF-FE4B-43CB-AAFF-F8594AD4342C.jpg

上記の例を次のように変更します。 while ループを使用して次のように記述します。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%! int fontSize; %> 
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
<h3>While 循环实例</h3>
<%while ( fontSize <= 3){ %>
   <font color="green" size="<%= fontSize %>">
    php中文网
   </font><br />
<%fontSize++;%>
<%}%>
</body> 
</html>
ブラウザでアクセスすると、出力結果は次のようになります (fontSize は 0 に初期化されているため、さらに 1 行出力されます):

7B4B85CF-FE4B-43CB-AAFF-F8594AD4342C.jpg

JSP 演算子

JSP は、すべての Java 論理演算子および算術演算子をサポートします。

次の表は、一般的な JSP 演算子を優先順位の高い順にリストしています:

1 ドル 乗算可能性 相加性 シフト > >= < <= == != & ^ |
カテゴリ演算子連想性
サフィックス () [] . (ドット演算子) 左から右へ
++ - 〜 右から左へ
* / % 左から右へ
+ - 左から右へ
>>><< 左から右へ 関係
左から右へ 等しい/不平等
左から右へ ビットと
左から右へ ビット XOR
左から右へ ビットまたは
左から右へ
論理積 && 左から右へ
論理和 || 左から右へ
条件判断 ?: 右から左へ
課題 = += -= *= /= %= >>= <<= &= ^= |= 右から左へ
コンマ , 左から右へ

JSP リテラル

JSP 言語は次のリテラルを定義します:

  • ブール値: true と false;

  • 整数型 (int): Java と同じ

  • Float: Java と同じ

  • 文字列: 一重引用符または二重引用符で始まります

  • ヌル:ヌル。