Изразителен език в JSP
⚡ Умно обобщение
Езикът за изрази в JSP опростява достъпа до данни, съхранявани в JavaБийнове и имплицитни обекти като request, session и application. Въведен в JSP 2.0, той поддържа аритметични, логически и релационни оператори, както и оператори за вземане на решения и цикли, написани в EL тагове.

Какво е 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>
Обяснение на Code:
- Code Ред 11: Езикът за изразяване (EL) е зададен, когато събираме две числа 1+2, следователно ще даде изход като 3.
Когато изпълните горния код, ще имате следния изход.
Продукция:
- Изразът е: 3 (като числата 1+2 ще бъдат добавени и ще служат като изход)
Изявления за контрол на потока:
JSP предоставя силата на Java да бъдат вградени в приложението. Можем да използваме всички API и градивни елементи на Java in JSP програмиране включително изрази за контролен поток, които включват вземане на решения и изрази за цикъл.
Има два вида изрази за управление на потока, описани по-долу;
- Изявления за вземане на решения
- Изявления за цикъл
Изявления за вземане на решения:
Изявлението за вземане на решение в JSP се основава на това дали зададеното условие е вярно или невярно. Изявлението ще се държи съответно.
Има два вида изявления за вземане на решения, описани по-долу:
- Ако – иначе
- превключите
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>
Обяснение на кода:
- Code Ред 10: Променливата с име месец се инициализира на 5 в етикетите на израза
- Code Ред 11: В етикетите EL има „условие ако“, което посочва, че ако месецът е равен на 2 (условието се тества тук като вярно или невярно)
- Code Ред 12: Ако условието е вярно, че променливата месец е 2, тогава ще се отпечата в изходния поток
- Code Ред 13-15: Ако горното условие 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>
Обяснение на Code:
- Code Ред 10: Променлива с име седмица се инициализира на 2 в етикетите на израза
- Code Ред 11: В EL таговете случайът на превключване се стартира, когато седмицата се предава като параметър
- Code Ред 12 – 29: Всички случаи са споменати, като се започне от случай 0 до случай 5, където стойността на параметъра седмица е съпоставена със случаите и съответно изходът е печат. В този случай стойността е 2, следователно случай 2 ще бъде изпълнен в този случай. Тук „out“ е класът на JSP, който записва изходния поток за генериран отговор, а „println“ е метод от този клас.
- Code Ред 30-32: Ако горните всички случаи са неуспешни, тогава ще се премести към частта по подразбиране и ще се изпълни, където изразът ще се отпечата в изходния поток и условието ще бъде затворено
Когато изпълните горния код, ще имате следния изход.
Изход:
- Резултатът в този случай е вторник, тъй като се извиква 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>
Обяснение за кода:
- Code Ред 10: Променливата с име „num“ се инициализира на 5 в изразните тагове
- Code Ред 11-14: В EL таговете „out“ е класът на JSP, а „println“ е методът на out, който отпечатва в изходния поток и се стартира for цикъл, който има три параметъра:
- Променлива i се инициализира на 0,
- Дадено е условие, където i да е по-малко от локалната променлива num,
- И i се увеличава при всяко повторение на цикъла.
В тялото на „forloop“ има клас JSP, който отпечатва в изходния поток, използвайки метода println, където отпечатваме променливата i.
Когато изпълните горния код, ще имате следния изход.
Изход:
- Продукция 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>
Обяснение на кода:
- Code Ред 10: Променливата с име i се инициализира на 1, а денят е 2 в изразните тагове
- Code Ред 11-17: В EL таговете има „while цикъл“, който ще се повтаря, докато не се зададе условие, така че ако денят е по-голям или равен на i-тата променлива, то ще бъде вярно. (day>=i) В него има „if condition“ (денят е равен на i) и „if condition“ е вярно, тогава ще се отпечата изходният поток и ще се излезе от while цикъла, в противен случай променливата i се увеличава и цикълът ще се повтаря.
Когато изпълним кода, ще имаме следния изход
Изходът е:
- Резултатът от този код ще бъде „своят Monday".
JSP Operaтори
JSP Operators поддържа повечето от своите аритметични и логически оператори, които се поддържат от Ява в рамките на етикетите на езика за изразяване (EL). Често използваните оператори са споменати по-долу:
Следват операторите:
| . | Достъп до свойство на компонент или запис в карта |
| [] | Достъп до елемент от масив или списък |
| () | Групирайте подизраз, за да промените реда на оценка |
| + | Допълнение |
| - | Подtracотрицание или отрицание на стойност |
| * | Умножение |
| / или 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>
Обяснение на кода:
- Code Ред 10: Променливата с име num1 се инициализира на 10, а num2 на 50 в изразните тагове
- Code Ред 11: Променливата num3 е сбор от num1 и num2, където използваме оператор за събиране
- Code Ред 12-16: В EL таговете използвахме условие ИЛИ, което е логически оператор, и аритметични оператори, за да проверим дали num3 е по-голямо от 0 в условието if. ИЛИ се използва, когато някое от условията е вярно. В такъв случай то ще влезе в „if случай“, където умножаваме две числа „num1“ и „num2“ и получаваме изход в „num4“, който ще отпечата изходния поток.
Когато изпълните горния код, ще имате следния изход.
Изход:
- Първият изход е Число 4 е 500 (променлива num4, която е num1*num2)
- Вторият изход е Число 3 е 60 (променлива num3, която num1+num2)






