JSP 式言語 (EL) チュートリアル

式言語 (EL) とは何ですか?

式言語 (EL) は、に格納されているデータへのアクセスを簡素化するメカニズムです。 Java JSP には、式を実行するための算術演算子や論理演算子など、EL で使用される演算子が多数あります。 JSP 2.0で導入されました

式言語 (EL) の JSP 構文

ELの構文 :$(式)

  • JSP では、中括弧内にあるものはすべて、出力ストリームに送信される実行時に評価されます。
  • この式は有効な EL 式であり、静的テキストと混合したり、他の式と組み合わせてより大きな式を形成したりできます。

JSP で式がどのように機能するかをよりよく理解するために、以下の例を見てみましょう。

この例では、EL を演算子として使用して 1 つの数値 (2+XNUMX) を加算し、それぞれ出力を取得する方法を見ていきます。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru JSP1</title>
</head>
<body>
<a>Expression is:</a>
${1+2}; 
</body>
</html>

コードの説明:

  • コード行 11: 式言語 (EL) は 1 つの数値 2+3 を加算するように設定されているため、出力は XNUMX になります。

上記のコードを実行すると、次のようになります。wing 出力。

出力:

JSP 式言語

  • 式は次のとおりです: 3 (数値として 1+2 が追加され、出力として機能します)

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

JSP は、アプリケーションに埋め込まれる Java の機能を提供します。 Java のすべての API と構成要素を使用できます。 JSPプログラミング 意思決定を含む制御フロー ステートメントとループ ステートメントが含まれます。

フロー制御ステートメントには次の XNUMX 種類があります。

  1. 意思決定に関する声明
  2. ループステートメント

意思決定に関する声明:

JSP での意思決定ステートメントは、条件セットが true か false かに基づいて行われます。 ステートメントはそれに応じて動作します。

意思決定ステートメントには、以下の XNUMX 種類があります。

  1. もし – それ以外の場合
  2. スイッチ

JSP If-else

「if else」ステートメントはすべての制御フロー ステートメントの基本であり、特定のテストが true と評価された場合にのみ、コードの特定のセクションを実行するようにプログラムに指示します。

この条件は、複数の条件が true か false かをテストするために使用されます。

  • 最初の条件が true の場合、「if ブロック」が実行され、
  • falseの場合は「elseブロック」が実行されます。

if – else ステートメントの構文:

If(test condition)
{
	 //Block of statements    
}
else
{
    //Block of statements
}

この例では、

変数を取得し、その変数が初期化されたものと一致するかどうかを確認することで、「if else」条件をテストします。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru JSP2</title>
</head>
<body>
<%! int month=5; %>
<% if(month==2){ %>
<a>Its February</a>
<% }else{ %>
<a>Any month other than February</a>
<%} %>
</body>
</html>

コードの説明:

  • コード行 10: month という名前の変数は、式タグ内で 5 に初期化されます。
  • コード行 11: EL タグには、月が 2 に等しいかどうかを示す「if 条件」があります (ここでは条件が true または false としてテストされます)。
  • コード行 12: 条件が true (変数 month が 2) の場合、出力ストリームに出力されます。
  • コード行 13 ~ 15: 上記の if 条件が失敗した場合は、ステートメントが出力ストリームに出力され、条件が閉じられる他のすべての場合の else 部分に移動します。

上記のコードを実行すると、次のようになります。wing 出力。

出力:

JSP If-else

  • 月は 5 なので、#2 (5 月) と等しくありません。 したがって、「XNUMX 月以外の任意の月」という出力が得られます (月は XNUMX と記載されているため、他の月は実行されます)。

JSPスイッチ

switch文の本体を「switchブロック」と呼びます。

  • switch case は、可能な実行パスの数を確認するために使用されます。
  • スイッチはすべてのデータ型で使用できます
  • switch ステートメントには複数のケースと XNUMX つのデフォルト ケースが含まれています
  • 式を評価してから、以下のすべてのステートメントを実行します。wing 一致するケース

switch ステートメントの構文:

switch (operator)
{
   Case 1:
       Block of statements
break;
   Case 2:
      Block of statements
break;


case n:
    Block of statements
break;
default:
  Block of statements
break;
}
  • Switch ブロックは XNUMX つのパラメーターで始まります。これは、渡す必要がある演算子であり、
  • 次に、条件を提供するさまざまなケースがあり、そのケースが実行される演算子と一致するものが実行されます。

以下の例では、

変数 year を定義し、true の場合と一致します。この場合、week は 2 であるため、2 になります。nd 大文字と小文字が一致し、出力は火曜日になります。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru JSP3</title>
</head>
<body>
<%! int week=2; %>
<% switch(week){
case 0:
    out.println("Sunday");
    break;
case 1:
    out.println("Monday");
    break;
case 2:
    out.println("Tuesday");
    break;
case 3:
    out.println("wednesday");
    break;
case 4:
    out.println("Thursday");
    break;
case 5:
    out.println("Friday");
    break;
    default:
        out.println("Saturday");
    }
%>
</body>
</html>

コードの説明:

  • コード行 10: 式タグ内で、week という名前の変数が 2 に初期化されます。
  • コード行 11: EL タグでは、週がパラメータとして渡されるスイッチ ケースが開始されます。
  • コード行 12 ~ 29: ケース 0 からケース 5 までのすべてのケースが記載されており、週パラメータの値がケースと一致し、それに応じて出力が print になります。 この場合、値は 2 であるため、この場合はケース 2 が実行されます。 ここで、「out」は生成された応答の出力ストリームを書き込む JSP のクラスであり、「println」はそのクラスのメソッドです。
  • コード行 30 ~ 32: 上記のすべてのケースが失敗した場合は、デフォルトの部分に移動して実行され、そこでステートメントが出力ストリームに出力され、条件が閉じられます。

上記のコードを実行すると、次のようになります。wing 出力。

出力:

JSPスイッチ

  • この場合の出力は、2 番目のケースが呼び出された火曜日です。

ループステートメント

JSPのForループ

これは、特定の条件で要素を反復するために使用され、XNUMX つのパラメーターがあります。

  • 変数カウンタが初期化されます
  • ループを実行するまでの条件
  • カウンタをインクリメントする必要がある

for ループの構文:

For(inti=0;i<n;i++)
{
           //block of statements
}

この例では、

カウンタが指定された数より小さくなるまで繰り返す for ループがあります。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru JSP4</title>
</head>
<body>
<%! int num=5; %>
<% out.println("Numbers are:"); 
for(int i=0;i<num;i++){
    out.println(i);
}%>
</body>
</html>

コードの説明:

  1. コード行 10: 式タグ内の「num」という名前の変数は 5 に初期化されます。
  2. コード行 11 ~ 14: EL タグでは、「out」は JSP のクラスで、「println」は出力ストリームに出力し、次の XNUMX つのパラメータを持つ for ループを開始する out のメソッドです。
    • 変数 i は 0 に初期化され、
    • i がローカル変数 num より小さいという条件が与えられ、
    • そして、ループが反復されるたびに i がインクリメントされます。

「forloop」の本体には、変数 i を出力するメソッド println を使用して出力ストリームに出力する JSP のクラスがあります。

上記のコードを実行すると、次のようになります。wing 出力。

出力:

JSPのForループ

  • 出力番号は 0 1 2 3 4 です。この例では、カウンタが変数以下になるまで「for ループ」を実行する必要があるという条件を与えています。 数値は 5 なので、ループは 0 から始まり 4 まで (5 回) 実行されます。 したがって、出力です。

JSP Whileループ

を反復するために使用されます 要素は ここで、条件のパラメータが XNUMX つあります。

構文:

While(i<n)
{
      //Block of statements
}

この例では、

日がカウンタ以上になるまで反復する while ループがあります。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru JSP5</title>
</head>
<body>
<%! int day=2; int i=1; %>
<% while(day>=i){
    if(day==i){
        out.println("Its Monday");
        break;}
    i++;}
%>

</body>
</html>

コードの説明:

  • コード行 10: 式タグ内の i という名前の変数は 1 に初期化され、day は 2 になります。
  • コード行 11 ~ 17: EL タグには、「while ループ」があり、その日が i 変数以上であるかのように条件が設定されるまで反復されます。 (day>=i)その中には「if 条件」(day が i に等しい) があり、「if 条件」が true の場合は出力ストリームを出力し、while ループを終了します。そうでない場合は i 変数がインクリメントされ、ループが繰り返されます。

コードを実行すると、次のようになります。wing 出力

出力は次のとおりです。

JSP Whileループ

  • このコードの出力は次のようになります。 Monday"。

JSP オペレーター

JSP 演算子は、式言語 (EL) タグ内で Java によってサポートされる算術演算子および論理演算子のほとんどをサポートします。

よく使用される演算子を以下に示します。

Following は演算子です:

. Bean プロパティまたはマップ エントリにアクセスする
[] 配列またはリスト要素にアクセスする
() 部分式をグループ化して評価順序を変更する
+ 追加
値の減算または否定
* 乗算
/ または div ディビジョン
% または mod モジュロ (剰余)
== または等式 平等性をテストする
!= またはね 不等式のテスト
< または lt 以下のテスト
> またはGT より大きいかどうかをテストする
<= またはル 以下か等しいかをテストする
>= またはゲ 以上かどうかをテストする
&& または 論理積のテスト
|| またはまたは 論理和をテストする
! か否か 単項ブール補数
空の 空の変数値をテストする

この例では、

  • 1 つの変数 num2 と num3 を宣言し、次に変数 num1 を取得します。ここで、JSP 演算子 + by を使用して num2 と num3 を加算し、numXNUMX を取得します。
  • 次に、JSP 演算子 (!= 、 >) を使用して、num3 が 0 に等しくないかどうかの条件を確認します。
  • 次に、別の変数 num4 を取得し、1 つの num2 と num4 を乗算して numXNUMX を取得します。

これらすべての数値が出力として出力されます。

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru JSP6</title>
</head>
<body>
<% int num1=10; int num2 = 50;
   int num3 = num1+num2;
   if(num3 != 0 || num3 > 0){
       int num4= num1*num2;
       out.println("Number 4 is " +num4);
       out.println("Number 3 is " +num3);
    }%>
</body>
</html>

コードの説明:

  • コード行 10: 式タグ内の num1 という名前の変数は 10 に初期化され、num2 は 50 に初期化されます。
  • コード行 11: 変数 num3 は、加算演算子を使用している num1 と num2 の合計です。
  • コード行 12 ~ 16: EL タグでは、if 条件で num3 が 0 より大きいかどうかをチェックするために、論理演算子と算術演算子である OR 条件を使用しました。 OR は、いずれか 1 つの条件が true の場合に使用され、その場合、2 つの数値「num4」と「numXNUMX」を乗算して「numXNUMX」に出力を取得する「if ケース」に入り、出力ストリームを出力します。

上記のコードを実行すると、次のようになります。wing 出力。

出力:

JSP オペレーター

  • 最初の出力は数値 4 が 500 (変数 num4 は num1*num2) です。
  • 3 番目の出力は、数値 60 は 3 (変数 num1、num2+numXNUMX) です。

まとめ

  • JSP Expression Language (EL) を使用すると、Javabeans コンポーネントに格納されているデータのアプリケーションに簡単にアクセスできます。
  • また、算術式と論理式の両方を作成することもできます。
  • EL タグ内では整数を使用できます。 浮動小数点数、文字列、およびブール値。
  • JSP では、EL タグを使用したループや意思決定ステートメントも使用できます。