Изразителен език в JSP

Какво е Expression Language (EL)?

Expression Language (EL) е механизъм, който опростява достъпността на данните, съхранявани в Java компонент на bean и друг обект като заявка, сесия и приложение и т.н.

Има много оператори в JSP, които се използват в EL като аритметични и логически оператори за изпълнение на израз. Той беше въведен в JSP 2.0

JSP синтаксис на езика за изразяване (EL)

Синтаксис на EL :$(израз)

  • В JSP, каквото и да присъства в скобите, се оценява по време на изпълнение, изпратено до изходния поток.
  • Изразът е валиден EL израз и може да се смесва със статичен текст и може да се комбинира с друг израз, за ​​да се образува по-голям израз.

За да добием по-добра представа как работи изразът в JSP, ще видим примера по-долу. В този пример ще видим как EL се използва като оператор за събиране на две числа (1+2) и съответно получаване на изхода.

<%@ 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.

Когато изпълните горния код, ще имате следния изход.

Продукция:

JSP Expression Language

  • Изразът е: 3 (като числата 1+2 ще бъдат добавени и ще служат като изход)

Изявления за контрол на потока:

JSP предоставя силата на Java да бъдат вградени в приложението. Можем да използваме всички API и градивни елементи на Java in JSP програмиране включително изрази за контролен поток, които включват вземане на решения и изрази за цикъл.

Има два вида изрази за управление на потока, описани по-долу;

  1. Изявления за вземане на решения
  2. Изявления за цикъл

Изявления за вземане на решения:

Изявлението за вземане на решение в JSP се основава на това дали зададеното условие е вярно или невярно. Изявлението ще се държи съответно.

Има два вида изявления за вземане на решения, описани по-долу:

  1. Ако – иначе
  2. превключите

JSP If-else

Изявлението „Ако иначе“ е основно от всички изявления за контролен поток и казва на програмата да изпълни определена част от кода само ако конкретният тест се оцени като верен.

Това условие се използва за тестване на повече от едно условие дали са верни или грешни.

  • Ако първото условие е вярно, тогава се изпълнява „if block“ и
  • ако е невярно, тогава се изпълнява „друг блок“.

Синтаксис за оператор 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: Променливата с име месец се инициализира на 5 в етикетите на израза
  • Кодов ред 11: В етикетите EL има „условие ако“, което посочва, че ако месецът е равен на 2 (условието се тества тук като вярно или невярно)
  • Кодов ред 12: Ако условието е вярно, че променливата месец е 2, тогава ще се отпечата в изходния поток
  • Кодов ред 13-15: Ако горното условие if е неуспешно, тогава то ще се премести в else част за всички останали случаи, когато операторът ще се отпечата в изходния поток и условието е затворено

Когато изпълните горния код, ще имате следния изход.

Изход:

JSP If-else

  • Тъй като месецът, който имаме, е 5, което не е равно на #2 (февруари). Следователно имаме изход „Всеки месец, различен от февруари“ (месецът е споменат като 5, следователно други се изпълняват)

JSP превключвател

Тялото на командата за превключване се нарича „блок за превключване“.

  • Случаят на превключване се използва за проверка на броя на възможните пътища за изпълнение.
  • Превключвател може да се използва с всички типове данни
  • Инструкциите за превключване съдържат повече от един случай и един случай по подразбиране
  • Той оценява израза, след което изпълнява всички изрази след съответстващия регистър

Синтаксис за команда за превключване:

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;
}
  • Блокът за превключване започва с един параметър, който е операторът, който трябва да бъде предаден и
  • След това има различни случаи, които осигуряват условие и който съвпада с оператора, този случай се изпълнява.

В примера по-долу сме дефинирали променлива седмица и тя се съпоставя с регистъра, което е вярно. В този случай седмицата е 2, следователно 2nd регистърът на буквите е съпоставен и изходът е вторник:

<%@ 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: Променлива с име седмица се инициализира на 2 в етикетите на израза
  • Кодов ред 11: В EL таговете случайът на превключване се стартира, когато седмицата се предава като параметър
  • Кодов ред 12 – 29: Всички случаи са споменати, като се започне от случай 0 до случай 5, където стойността на параметъра седмица е съпоставена със случаите и съответно изходът е печат. В този случай стойността е 2, следователно случай 2 ще бъде изпълнен в този случай. Тук „out“ е класът на JSP, който записва изходния поток за генериран отговор, а „println“ е метод от този клас.
  • Кодов ред 30-32: Ако горните всички случаи са неуспешни, тогава ще се премести към частта по подразбиране и ще се изпълни, където изразът ще се отпечата в изходния поток и условието ще бъде затворено

Когато изпълните горния код, ще имате следния изход.

Изход:

JSP превключвател

  • Резултатът в този случай е вторник, тъй като се извиква 2-ри случай.

Изявления за цикъл

JSP 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“ е методът на out, който отпечатва в изходния поток и се стартира for цикъл, който има три параметъра:
    • Променлива i се инициализира на 0,
    • Дадено е условие, където i да е по-малко от локалната променлива num,
    • И i се увеличава при всяко повторение на цикъла.

В тялото на „forloop“ има клас JSP, който отпечатва в изходния поток, използвайки метода println, където отпечатваме променливата i.

Когато изпълните горния код, ще имате следния изход.

Изход:

JSP For цикъл

  • Продукция Numbers са 0 1 2 3 4. В този пример ние даваме условието, че докато броячът стане по-малък от равен на променлива, трябва да се изпълни „for цикълът“. Числото е 5, така че цикълът ще започне от 0 и ще продължи до 4 (5 пъти). Оттук и изходът.

JSP Докато цикъл

Използва се за повторение на елементи където има един параметър на условието.

Синтаксис:

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, а денят е 2 в изразните тагове
  • Кодов ред 11-17: В таговете EL има „while loop“, който ще се повтаря, докато имаме зададено условие, че ако денят е по-голям или равен на i променливата ще бъде вярна. (ден>=i) В рамките на това има „условие ако“ (денят е равен на i) и „ако условието“ е вярно, тогава ще отпечата изходния поток и ще излезе от цикъла while, в противен случай променливата i се увеличава и цикълът се повтаря.

Когато изпълним кода, ще имаме следния изход

Изходът е:

JSP Докато цикъл

  • Резултатът от този код ще бъде „своят Monday".

JSP Operaтори

JSP Operators поддържа повечето от своите аритметични и логически оператори, които се поддържат от Ява в рамките на етикетите на езика за изразяване (EL). Често използваните оператори са споменати по-долу:

Следват операторите:

. Достъп до свойство на компонент или запис в карта
[] Достъп до елемент от масив или списък
() Групирайте подизраз, за ​​да промените реда на оценка
+ Допълнение
- Изваждане или отрицание на стойност
* Умножение
/ или div делене
% или мод Модуло (остатък)
== или екв Тест за равенство
!= или ne Тест за неравенство
< или lt Тествайте за по-малко от
> или gt Тествайте за по-голямо от
<= или le Тествайте за по-малко или равно
>= или ge Тествайте за по-голямо или равно
&& или и Тест за логическо И
|| или или Тест за логическо ИЛИ
! или не Унарно булево допълнение
Празен Тествайте за празни стойности на променлива

В този пример,

  • Декларираме две променливи num1 и num2 и след това вземаме променлива num3, където използваме JSP оператор + by, за да добавим num1 и num2 и да получим num3.
  • След това проверяваме условие дали num3 не е равно на 0, като използваме JSP оператори (!= , >) и
  • След това вземете друга променлива num4, като умножите две num1 и num2, получаваме num4.

Всички тези числа трябва да бъдат отпечатани като наш резултат:

<%@ 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 сме използвали условие ИЛИ, което е логически оператор и аритметични оператори, за да проверим дали num3 е по-голямо от 0 в условието if. ИЛИ се използва, когато някое условие е вярно, в такъв случай то ще влезе в „if case“, където умножаваме две числа „num1“ и „num2“ и получаваме изход в „num4″ и ще отпечата изходния поток.

Когато изпълните горния код, ще имате следния изход.

Изход:

JSP Operaтори

  • Първият изход е Число 4 е 500 (променлива num4, която е num1*num2)
  • Вторият изход е Число 3 е 60 (променлива num3, която num1+num2)

Oбобщение

  • JSP Expression Language (EL) улеснява достъпа до приложението за данните, съхранени в компонентите на javabeans.
  • Той също така позволява създаване на изрази, които са едновременно аритметични и логически.
  • В рамките на EL таговете можем да използваме цели числа. Числа с плаваща запетая, низове и булеви стойности.
  • В JSP можем също да използваме цикли и изявления за вземане на решения, използвайки EL тагове