English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このセクションでは、JSP開発における基本的な文法について簡単に紹介します。
スクリプトプログラムは、スクリプト言語で有効なJava文、変数、メソッド、または式を任意の量含むことができます。
スクリプトプログラムの文法形式:
<% コードスライス %>
または、以下のように等価なXML文を書くこともできます:
<jsp:scriptlet> コードスライス </jsp:scriptlet>
テキスト、HTMLタグ、JSP要素は、スクリプトプログラムの外に書かなければなりません。
以下は、本チュートリアルの最初のJSPサンプルです:
<html> <head><title>Hello World</title></head> <body> Hello World!<br/> <% out.println("あなたの IP アドレスは " + 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>基础教程网(oldtoolbag.com)</title> </head> <body> Hello World!<br/> <% out.println("あなたの IP アドレス " + request.getRemoteAddr()); %> </body> </html>
このようにして中国語が正常に表示されます。
一つの宣言文は、一つまたは複数の変数、メソッドを宣言し、それを後のJavaコードで使用することができます。JSPファイルでは、それらの変数やメソッドを使用する前に、宣言を行う必要があります。
JSP宣言の文法形式:
<%! declaration; [ declaration; ]+ ... %>
または、以下のように等価なXML文を書くこともできます:
<jsp:declaration> コードスライス </jsp:declaration>
プログラム例:
<%! int i = 0; %> <%! int a, b, c; %> <%! Circle a = new Circle(2.0); %>
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>基础教程网(oldtoolbag.com)</title> </head> <body> <p> 今日の日付は: <%= (new java.util.Date()).toLocaleString()%> </p> </body> </html>
运行后得到以下结果:
今日の日付は: 2016-6-25 13:40:07
JSPコメントには主に2つの役割があります。コードにコメントを付けることと、特定のコードをコメントアウトすることです。
JSPコメントの文法形式:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> !DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>基础教程网(oldtoolbag.com)</title> </head> <body> <%-- この部分のコメントはウェブページでは表示されません。--%> <p> 今日の日付は: <%= (new java.util.Date()).toLocaleString()%> </p> </body> </html>
运行后得到以下结果:
今日の日付は: 2016-6-25 13:41:26
コメントの文法規則は以下の通りです:
文法 | 説明 |
---|---|
<%-- コメント --%> | JSPコメント、コメント内容はブラウザに送信されず、コンパイルもされません。 |
<!-- コメント --> | HTMLコメント、ブラウザでページのソースコードを確認するとコメント内容が見られます。 |
<\% | 静的 <% 常量を表します |
%\> | 静的 %> 常量を表します |
\' | 属性で使用されるシングルクォート |
\" | 属性で使用されるダブルクォート |
JSP指令は、全体のJSPページに関連する属性を設定するために使用されます。
JSP指令の文法形式:
<%@ directive attribute="value" %>
ここには3種類の指令タグがあります:
指令 | 説明 |
---|---|
<%@ page ... %> | ページの依存属性を定義します。例えば、スクリプト言語、エラーページ、キャッシュの要件などです。 |
<%@ include ... %> | 他のファイルを含めます。 |
<%@ taglib ... %> | タグライブラリの定義を導入します。カスタムタグも可能です。 |
JSPアクションタグは、servletエンジンを制御するためにXML構造を使用します。ファイルを動的に挿入したり、JavaBeanコンポーネントを再利用したり、ユーザーを別のページにリダイレクトしたり、Javaプラグインに関連するHTMLを生成したりすることができます。
アクションタグは、XML標準に厳密に従う一種の文法形式を持っています:
<jsp:action_name attribute="value" />
アクションタグは、事前に定義された関数のようなものです。以下の表に、使用可能なJSPアクションタグの一覧を示します:
文法 | 説明 |
---|---|
jsp:include | 現在のページに静的または動的なリソースを含めるために使用 |
jsp:useBean | JavaBeanコンポーネントを検索し、初期化 |
jsp:setProperty | JavaBeanコンポーネントの値を設定 |
jsp:getProperty | JavaBeanコンポーネントの値をoutputに挿入 |
jsp:forward | ユーザー要求を含むrequestオブジェクトを一つのJSPファイルから別のファイルに伝達 |
jsp:plugin | 生成されたHTMLページにAppletやJavaBeanオブジェクトを含めるために使用 |
jsp:element | 動的に作成されるXML要素を一つ作成 |
jsp:attribute | 動的に作成されるXML要素の属性を定義 |
jsp:body | 動的に作成されるXML要素の主体を定義 |
jsp:text | テンプレートデータをエンキャップするために使用 |
JSPは九つの自動定義の変数をサポートしており、これらの変数は隠しオブジェクトと呼ばれます。以下の表に、これらの隠しオブジェクトの簡単な説明を示します:
オブジェクト | 説明 |
---|---|
request | HttpServletRequestクラスの例 |
response | HttpServletResponseクラスの例 |
out | PrintWriterクラスの例、結果をウェブページに输出するために使用 |
session | HttpSessionクラスの例 |
application | ServletContextクラスの例、アプリケーションコンテキストに関連しています |
config | ServletConfigクラスの例 |
pageContext | PageContextクラスの例、JSPページのすべてのオブジェクトおよびネームスペースへのアクセスを提供 |
page | 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>基础教程(oldtoolbag.com)</title> </head> <body> <h2>IF...ELSE 示例</h2> <% 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>基础教程(oldtoolbag.com)</title> </head> <body> <h2>SWITCH...CASE 示例</h2> <% 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的三个基本循环类型: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>基础教程网(oldtoolbag.com)</title> </head> <body> <h2>For 循环示例</h2> <%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>基础教程(oldtoolbag.com)</title> </head> <body> <h2>While ループの例</h2> <%while ( fontSize <= 3{ %> <font color="green" size="<%= fontSize %>"> 基本教程 </font><br /> <%fontSize++;%> <%}%> </body> </html>
ブラウザからのアクセス、出力結果は(fontSizeが0に初期化されているため、一行分多く出力されます):
JSP演算子
JSPはすべてのJavaの論理および算術演算子をサポートしています。
以下の表に、JSPの一般的な演算子とその優先順位を示します:
カテゴリ | 演算子 | 結合性 |
---|---|---|
後置 | () [] . (点演算子) | 左から右 |
一元 | ++ - - ! ~ | 右から左 |
可乗性 | * / % | 左から右 |
可加性 | + - | 左から右 |
シフト | >> >>> << | 左から右 |
関係 | > >= < <= | 左から右 |
相等/不等 | == != | 左から右 |
ビットと | & | 左から右 |
ビット異或 | ^ | 左から右 |
ビット或 | | | 左から右 |
論理と | && | 左から右 |
論理或 | || | 左から右 |
条件判定 | ?: | 右から左 |
代入 | = += -= *= /= %= >>= <<= &= ^= |= | 右から左 |
カンマ | , | 左から右 |
JSP言語は以下のいくつかの文字列リテラルを定義しています:
ボルン値(boolean):trueおよびfalse;
整数型(int):Javaと同じ;
浮動小数点型(float):Javaと同じ;
文字列(string):シングルクォートまたはダブルクォートで始まり、終わる;
Null:null。