Udtrykssprog i JSP
Hvad er Expression Language (EL)?
Expression Language (EL) er en mekanisme, der forenkler tilgรฆngeligheden af โโde data, der er gemt i Java bรธnnekomponent og andet objekt som anmodning, session og applikation osv.
Der er mange operatorer i JSP, der bruges i EL som aritmetiske og logiske operatorer til at udfรธre et udtryk. Det blev introduceret i JSP 2.0
JSP Syntax of Expression Language (EL)
Syntaks af EL :$(udtryk)
- I JSP bliver alt, hvad der er til stede i bรธjlerne, evalueret ved kรธrsel, sendt til outputstrรธmmen.
- Udtrykket er et gyldigt EL-udtryk, og det kan blandes med en statisk tekst og kan kombineres med andre udtryk for at danne et stรธrre udtryk.
For at fรฅ en bedre idรฉ om, hvordan udtryk fungerer i JSP, vil vi se nedenstรฅende eksempel. I dette eksempel vil vi se, hvordan EL bruges som en operator til at tilfรธje to tal (1+2) og fรฅ henholdsvis output.
<%@ 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>
Forklaring af Code:
- Code Linje 11: Expression Language (EL) er indstillet, hvor vi tilfรธjer to tal 1+2, derfor vil det give output som 3.
Nรฅr du udfรธrer ovenstรฅende kode, vil du have fรธlgende output.
Produktion:
- Udtrykket er: 3 (da tal 1+2 vil blive tilfรธjet og fungere som output)
Flowkontrolerklรฆringer:
JSP giver kraften til Java skal indlejres i applikationen. Vi kan bruge alle API'er og byggeklodser i Java in JSP programmering herunder kontrolflow-erklรฆringer, som inkluderer beslutningstagning og loop-sรฆtningerne.
Der er to typer flowkontrolerklรฆringer beskrevet nedenfor;
- Udtalelser om beslutningstagning
- Looperklรฆringer
Beslutningserklรฆringer:
Beslutningssรฆtning i JSP er baseret pรฅ, om betingelsessรฆttet er sandt eller falsk. Erklรฆringen vil opfรธre sig i overensstemmelse hermed.
Der er to typer beslutningserklรฆringer beskrevet nedenfor:
- Hvis ellers
- skifte
JSP Hvis-andet
"If else"-sรฆtningen er grundlรฆggende for alle kontrolflow-sรฆtninger, og den fortรฆller programmet, at det kun skal udfรธre den bestemte sektion af kode, hvis den pรฅgรฆldende test evalueres til sand.
Denne betingelse bruges til at teste for mere end รฉn tilstand, om de er sande eller falske.
- Hvis den fรธrste betingelse er sand, udfรธres "hvis blok" og
- hvis det er falsk, udfรธres "else-blokering".
Syntaks for if โ else sรฆtning:
If(test condition)
{
//Block of statements
}
else
{
//Block of statements
}
I dette eksempel skal vi teste tilstanden "hvis andet" ved at tage variabel og kontrollere vรฆrdien, hvis variablen stemmer overens med det, den er initialiseret:
<%@ 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>
Forklaring af koden:
- Code Linje 10: Variabel navngivet mรฅned initialiseres til 5 i udtryksmรฆrkerne
- Code Linje 11: I EL-tags er der "hvis betingelse", der angiver, at hvis mรฅneden er lig med 2 (betingelsen testes her som sand eller falsk)
- Code Linje 12: Hvis betingelsen er sand, dvs. at den variable mรฅned er 2, udskrives den til outputstrรธm
- Code Linje 13-15: Hvis ovenstรฅende, hvis betingelse mislykkes, vil den flytte til anden del for alle andre tilfรฆlde, hvor sรฆtningen udskrives til outputstrรธmmen, og betingelsen lukkes
Nรฅr du udfรธrer ovenstรฅende kode, vil du have fรธlgende output.
Output:
- Siden den mรฅned vi har er 5, hvilket ikke er lig med #2 (februar). Derfor har vi outputtet "Enhver anden mรฅned end februar" (mรฅned er nรฆvnt som 5, derfor udfรธres ellers)
JSP Switch
Brรธdteksten i switch-sรฆtningen kaldes en "switch-blok".
- Switch casen bruges til at kontrollere antallet af mulige udfรธrelsesveje.
- En switch kan bruges med alle datatyper
- Switch-sรฆtningerne indeholder mere end รฉn sag og รฉn standardsag
- Den evaluerer udtrykket og udfรธrer derefter alle sรฆtningerne efter matchende tilfรฆlde
Syntaks for switch-sรฆtning:
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 blok begynder med รฉn parameter, som er den operatรธr, der skal passeres og
- Sรฅ er der forskellige sager, som giver betingelse, og hvilken som helst matcher med operatรธren, den sag udfรธres.
I eksemplet nedenfor har vi defineret en variabel uge, og den matches med sagen, alt efter hvad der er sandt. I dette tilfรฆlde er uge 2 og derfor 2nd case er matchet, og outputtet er tirsdag:
<%@ 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>
Forklaring af Code:
- Code Linje 10: Variabel navngivet uge initialiseres til 2 i udtryksmรฆrkerne
- Code Linje 11: I EL-tagsene startes switch-casen, hvor uge sendes som parameter
- Code Linje 12 โ 29: Alle tilfรฆldene er blevet nรฆvnt fra tilfรฆlde 0 til tilfรฆlde 5, hvor vรฆrdien af โโugeparameteren er matchet med tilfรฆldene, og derfor udskrives output. I dette tilfรฆlde er vรฆrdien 2, sรฅ tilfรฆlde 2 vil blive udfรธrt i dette tilfรฆlde. Her er "out" klassen af โโJSP, som skriver outputstrรธmmen for genereret svar, og "println" er en metode i den klasse.
- Code Linje 30-32: Hvis ovenstรฅende alle tilfรฆlde mislykkes, vil den flytte til standarddelen og blive udfรธrt, hvor sรฆtningen udskrives til outputstrรธmmen og tilstanden lukkes
Nรฅr du udfรธrer ovenstรฅende kode, vil du have fรธlgende output.
Output:
- Udgangen i dette tilfรฆlde er tirsdag som 2. tilfรฆlde kaldes.
Looperklรฆringer
JSP Til loop
Det bruges til at iterere elementerne for en bestemt tilstand, og det har tre parametre.
- Variabel tรฆller initialiseres
- Betingelse indtil lรธkken skal udfรธres
- Tรฆlleren skal รธges
For slรธjfesyntaks:
For(inti=0;i<n;i++)
{
//block of statements
}
I dette eksempel har vi for loop, som itererer, indtil tรฆlleren er mindre end det givne tal:
<%@ 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>
Forklaring pรฅ koden:
- Code Linje 10: Variabel med navnet "num" initialiseres til 5 i udtryksmรฆrkerne
- Code Linje 11-14: I EL-tags er "out" klassen af โโJSP, og "println" er metoden til at udskrive i output-stream og for loop startes, som har tre parametre:
- Variabel i initialiseres til 0,
- Betingelse er givet, hvor i skal vรฆre mindre end lokal variabel num,
- Og i รธges hver gang loop itererer.
I hoveddelen af โโ"forloop" er der en klasse af JSP, som udskriver i outputstrรธmmen ved hjรฆlp af metoden println, hvor vi udskriver variablen i.
Nรฅr du udfรธrer ovenstรฅende kode, vil du have fรธlgende output.
Output:
- Produktion Numbers are 0 1 2 3 4. I dette eksempel giver vi betingelsen, at indtil tรฆlleren er mindre end lig med en variabel, skal "for loop" udfรธres. Tallet er 5, sรฅ lรธkken starter fra 0 og lรธber til 4 (5 gange). Derfor outputtet.
JSP While loop
Det bruges til at gentage elementer hvor den har รฉn parameter af betingelsen.
Syntaks:
While(i<n)
{
//Block of statements
}
I dette eksempel har vi en while-lรธkke, som vil iterere, indtil dagen er stรธrre end lig med tรฆlleren:
<%@ 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>
Forklaring af koden:
- Code Linje 10: Variabel med navnet i initialiseres til 1 og dag er 2 i udtryksmรฆrkerne
- Code Linje 11-17: I EL-tags er der "while loop" vil iterere indtil vi har en betingelse sat som om dagen er stรธrre eller lig med i variabel vil vรฆre sand. (dag>=i) Inden for det er der "hvis betingelse" (dag er lig med i) og "hvis betingelse" er sand, vil den udskrive outputstrรธmmen, og den vil forlade while-lรธkken, ellers รธges i-variablen og loop itererer.
Nรฅr vi udfรธrer koden, vil vi have fรธlgende output
Output er:
- Outputtet af denne kode vil vรฆre "dens Monday".
JSP Operatorer
JSP Operators understรธtter de fleste af sine aritmetiske og logiske operatorer, som understรธttes af Java inden for expression language (EL) tags. Ofte brugte operatรธrer er nรฆvnt nedenfor:
Fรธlgende er operatรธrerne:
| . | Fรฅ adgang til en bรธnneejendom eller kortpost |
| [] | Fรฅ adgang til et array eller listeelement |
| () | Gruppรฉr et underudtryk for at รฆndre evalueringsrรฆkkefรธlgen |
| + | Tilsรฆtning |
| - | Undertraction eller negation af en vรฆrdi |
| * | Multiplikation |
| / eller div | Afdeling |
| % eller mod | Modulo (resten) |
| == eller lign | Test for lighed |
| != eller ne | Test for ulighed |
| < eller lt | Test for mindre end |
| > eller gt | Test for stรธrre end |
| <= eller le | Test for mindre end eller lig |
| >= eller ge | Test for stรธrre end eller lig |
| && eller og | Test for logisk OG |
| || eller eller | Test for logisk ELLER |
| ! eller ikke | Unรฆrt boolesk komplement |
| Tom | Test for tomme variabelvรฆrdier |
I dette eksempel
- Vi erklรฆrer to variable num1 og num2 og tager derefter en variabel num3, hvor vi bruger JSP operator + by til at tilfรธje num1 og num2 og fรฅ num3.
- Derefter tjekker vi en betingelse om num3 ikke er lig med 0 ved at bruge JSP-operatorer (!= , >) og
- Tag derefter en anden variabel num4 ved at gange to num1 og num2 fรฅr vi num4.
Alle disse tal skal udskrives som vores output:
<%@ 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>
Forklaring af koden:
- Code Linje 10: Variabel med navnet num1 initialiseres til 10 og num2 til 50 i udtryksmรฆrkerne
- Code Linje 11: Variablen num3 er summen af โโnum1 og num2, hvor vi bruger additionsoperator
- Code Linje 12-16: I EL-taggene har vi brugt en OR-betingelse, som er logisk operator og aritmetiske operatorer til at kontrollere, om num3 er stรธrre end 0 i if-betingelsen. ELLER bruges, nรฅr en betingelse er sand i et sรฅdant tilfรฆlde, vil den indtaste "hvis tilfรฆlde", hvor vi multiplicerer to tal "num1" og "num2" og fรฅr output i "num4", og det vil udskrive outputstrรธmmen.
Nรฅr du udfรธrer ovenstรฅende kode, vil du have fรธlgende output.
Output:
- Det fรธrste output er Nummer 4 er 500 (variabel num4, som er num1*num2)
- Den anden udgang er Nummer 3 er 60 (variabel num3, som num1+num2)
Resumรฉ
- JSP Expression Language (EL) gรธr det nemt at fรฅ adgang til applikationen for de data, der er gemt i javabeans-komponenterne.
- Det giver ogsรฅ mulighed for at skabe udtryk, som er bรฅde aritmetiske og logiske.
- Inden for EL-tags kan vi bruge heltal. Flydende kommatal, strenge og booleske vรฆrdier.
- I JSP kan vi ogsรฅ bruge loops og beslutningstagningserklรฆringer ved hjรฆlp af EL-tags






