JSP の式言語
⚡ スマートサマリー
JSP の式言語は、保存されているデータへのアクセスを簡素化します。 JavaBeanや、リクエスト、セッション、アプリケーションなどの暗黙的なオブジェクト。JSP 2.0で導入され、算術演算子、論理演算子、関係演算子に加え、ELタグ内に記述された条件分岐やループ文をサポートします。

式言語 (EL) とは何ですか?
式言語 (EL) は、に格納されているデータへのアクセスを簡素化するメカニズムです。 Java Bean コンポーネントと、リクエスト、セッション、アプリケーションなどのその他のオブジェクト。
JSPには、式を実行するための算術演算子や論理演算子など、ELで使用される演算子が多数あります。これはJSP 2.0で導入されました。
式言語 (EL) の JSP 構文
ELの構文 : ${expression}
- 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>
の説明 Code:
- Code ライン11: 式言語 (EL) は、1 つの数値 2+3 を加算する場所に設定されているため、出力は XNUMX になります。
上記のコードを実行すると、次の出力が得られます。
出力:
- 式は3です(1+2の数字が加算され、出力として機能します)
フロー制御ステートメント:
JSPは次の機能を提供します Java アプリケーションに組み込むことができます。 Java in JSPプログラミング 意思決定を含む制御フロー ステートメントとループ ステートメントが含まれます。
フロー制御ステートメントには次の XNUMX 種類があります。
- 意思決定に関する声明
- ループステートメント
意思決定に関する声明:
JSP での意思決定ステートメントは、条件セットが true か false かに基づいて行われます。 ステートメントはそれに応じて動作します。
意思決定ステートメントには、以下の XNUMX 種類があります。
- もし – それ以外の場合
- スイッチ
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>
コードの説明:
- Code ライン10: month という名前の変数は、式タグ内で 5 に初期化されます。
- Code ライン11: EL タグには、月が 2 に等しいかどうかを示す「if 条件」があります (ここでは条件が true または false としてテストされます)。
- Code ライン12: 条件が true (変数 month が 2) の場合、出力ストリームに出力されます。
- Code 13〜15行目: 上記の if 条件が失敗した場合は、ステートメントが出力ストリームに出力され、条件が閉じられる他のすべての場合の else 部分に移動します。
上記のコードを実行すると、次の出力が得られます。
出力:
- 月は 5 なので、#2 (5 月) と等しくありません。したがって、出力は「XNUMX 月以外の任意の月」になります (月は XNUMX と指定されているため、else が実行されます)
JSPスイッチ
switch文の本体を「switchブロック」と呼びます。
- switch case は、可能な実行パスの数を確認するために使用されます。
- スイッチはすべてのデータ型で使用できます
- switch ステートメントには複数のケースと XNUMX つのデフォルト ケースが含まれています
- 式を評価し、一致するケースに続くすべての文を実行します。
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; }
- スイッチブロックは1つのパラメータで始まり、これは渡す必要のある演算子であり、
- 次に、条件を提供するさまざまなケースがあり、演算子と一致するケースが実行されます。
以下の例では、変数 week を定義し、真となるケースと照合しています。この場合、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>
の説明 Code:
- Code ライン10: 式タグ内で、week という名前の変数が 2 に初期化されます。
- Code ライン11: EL タグでは、週がパラメータとして渡されるスイッチ ケースが開始されます。
- Code 12~29行目: ケース 0 からケース 5 までのすべてのケースが記載されており、週パラメータの値がケースと一致し、それに応じて出力が print になります。 この場合、値は 2 であるため、この場合はケース 2 が実行されます。 ここで、「out」は生成された応答の出力ストリームを書き込む JSP のクラスであり、「println」はそのクラスのメソッドです。
- Code 30〜32行目: 上記のすべてのケースが失敗した場合は、デフォルトの部分に移動して実行され、そこでステートメントが出力ストリームに出力され、条件が閉じられます。
上記のコードを実行すると、次の出力が得られます。
出力:
- この場合の出力は、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>
コードの説明:
- Code ライン10: 式タグ内の「num」という名前の変数は 5 に初期化されます。
- Code 11〜14行目: EL タグでは、「out」は JSP のクラスで、「println」は出力ストリームに出力し、次の XNUMX つのパラメータを持つ for ループを開始する out のメソッドです。
- 変数 i は 0 に初期化され、
- i がローカル変数 num より小さいという条件が与えられ、
- そして、ループが反復されるたびに i がインクリメントされます。
「forloop」の本体には、変数 i を出力するメソッド println を使用して出力ストリームに出力する JSP のクラスがあります。
上記のコードを実行すると、次の出力が得られます。
出力:
- 出力 Numbers この例では、カウンタが変数以下になるまで「for ループ」を実行する必要があるという条件を与えています。数値は 0 なので、ループは 1 から始まり 2 まで (3 回) 実行されます。したがって、出力です。
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>
コードの説明:
- Code ライン10: 式タグ内の i という名前の変数は 1 に初期化され、day は 2 になります。
- Code 11〜17行目: ELタグには「whileループ」があり、条件が設定されるまで繰り返されます。つまり、日が変数i以上であれば、条件が真になります(day>=i)。その中に「if条件」(日がiと等しい)があり、「if条件」が真であれば出力ストリームが出力され、whileループが終了します。そうでなければ、変数iがインクリメントされ、ループが繰り返されます。
コードを実行すると、次の出力が得られます。
出力は次のとおりです。
- このコードの出力は次のようになります。 Monday"。
JSP Operaトー
JSP Operatorsは、ほとんどの算術演算子と論理演算子をサポートしており、 ジャワ 式言語 (EL) タグ内。よく使用される演算子を以下に示します。
演算子は次のとおりです。
| . | Bean プロパティまたはマップ エントリにアクセスする |
| [] | 配列またはリスト要素にアクセスする |
| () | 部分式をグループ化して評価順序を変更する |
| + | 追加 |
| – | サブtrac値の肯定または否定 |
| * | 乗算 |
| / または 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>
コードの説明:
- Code ライン10: 式タグ内の num1 という名前の変数は 10 に初期化され、num2 は 50 に初期化されます。
- Code ライン11: 変数num3はnum1とnum2の合計であり、加算演算子を使用しています。
- Code 12〜16行目: ELタグでは、論理演算子と算術演算子を組み合わせたOR条件を使用して、if条件でnum3が0より大きいかどうかをチェックしています。ORは、いずれかの条件が真の場合に使用され、その場合は「if case」に入り、そこで2つの数値「num1」と「num2」を乗算して「num4」に出力し、出力ストリームを表示します。
上記のコードを実行すると、次の出力が得られます。
出力:
- 最初の出力は数値 4 が 500 (変数 num4 は num1*num2) です。
- 3 番目の出力は、数値 60 は 3 (変数 num1、num2+numXNUMX) です。






