Jezik izražavanja u JSP-u
Što je Expression Language (EL)?
Expression Language (EL) mehanizam je koji pojednostavljuje dostupnost podataka pohranjenih u Java bean komponenta i drugi objekti poput zahtjeva, sesije i aplikacije itd.
Postoje mnogi operatori u JSP-u koji se koriste u EL-u poput aritmetičkih i logičkih operatora za izvođenje izraza. Predstavljen je u JSP 2.0
JSP sintaksa jezika izražavanja (EL)
Sintaksa EL :$(izraz)
- U JSP-u, sve što se nalazi u vitičastim zagradama procjenjuje se tijekom izvođenja i šalje u izlazni tok.
- Izraz je važeći EL izraz i može se miješati sa statičnim tekstom i može se kombinirati s drugim izrazom kako bi se formirao veći izraz.
Da bismo dobili bolju predodžbu o tome kako izraz funkcionira u JSP-u, vidjet ćemo primjer u nastavku. U ovom primjeru ćemo vidjeti kako se EL koristi kao operator za zbrajanje dva broja (1+2) i dobivanje izlaza.
<%@ 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>
Objašnjenje koda:
- Redak koda 11: Jezik izražavanja (EL) je postavljen tako da zbrajamo dva broja 1+2, stoga će dati izlaz kao 3.
Kada izvršite gornji kod, imat ćete sljedeći izlaz.
Izlaz:
- Izraz je: 3 (Brojevi 1+2 će se zbrajati i služiti kao izlaz)
Izjave o kontroli toka:
JSP pruža moć Java biti ugrađen u aplikaciju. Možemo koristiti sve API-je i građevne blokove Java in JSP programiranje uključujući izjave o tijeku upravljanja koje uključuju donošenje odluka i izjave petlje.
Postoje dvije vrste izjava o kontroli protoka koje su opisane u nastavku;
- Izjave o donošenju odluka
- Izjave petlje
Izjave o donošenju odluka:
Izjava o donošenju odluka u JSP-u temelji se na tome je li postavljeni uvjet istinit ili lažan. Izjava će se ponašati u skladu s tim.
Postoje dvije vrste izjava o donošenju odluka koje su opisane u nastavku:
- Ako – inače
- prebaciti
JSP If-else
Naredba "If else" osnovna je od svih naredbi tijeka kontrole i govori programu da izvrši određeni dio koda samo ako se određeni test ocijeni istinitim.
Ovaj se uvjet koristi za testiranje više od jednog uvjeta jesu li istiniti ili lažni.
- Ako je prvi uvjet istinit, tada se izvršava “if block” i
- ako je false tada se izvršava “else block”.
Sintaksa za if – else naredbu:
If(test condition) { //Block of statements } else { //Block of statements }
U ovom primjeru, testirat ćemo uvjet "if else" uzimajući varijablu i provjeravajući vrijednost odgovara li varijabla onome što je inicijalizirano:
<%@ 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>
Objašnjenje koda:
- Redak koda 10: Varijabla pod nazivom mjesec inicijalizirana je na 5 u oznakama izraza
- Redak koda 11: U EL oznakama postoji "uvjet ako" koji navodi da ako je mjesec jednak 2 (uvjet se ovdje testira kao istinit ili netočan)
- Redak koda 12: Ako je uvjet istinit da je varijabla mjesec 2 tada će se ispisati u izlazni tok
- Redak koda 13-15: Ako gornji if uvjet ne uspije, premjestit će se na else dio za sve ostale slučajeve u kojima će se izjava ispisati u izlazni tok i uvjet je zatvoren
Kada izvršite gornji kod, imat ćete sljedeći izlaz.
Izlaz:
- Budući da je mjesec koji imamo 5 što nije jednako #2 (veljača). Dakle, imamo izlaz "Bilo koji mjesec osim veljače" (mjesec se spominje kao 5, stoga se drugi izvršavaju)
JSP prekidač
Tijelo naredbe switch naziva se "switch block".
- Slučaj prekidača koristi se za provjeru broja mogućih putanja izvršenja.
- Prekidač se može koristiti sa svim vrstama podataka
- Naredbe switch sadrže više od jednog slučaja i jedan zadani slučaj
- On procjenjuje izraz i zatim izvršava sve naredbe koje slijede odgovarajući slučaj
Sintaksa za naredbu 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; }
- Blok prekidača počinje s jednim parametrom, a to je operator koji treba proslijediti i
- Zatim postoje različiti slučajevi koji osiguravaju uvjet i koji god odgovara operatoru taj se slučaj izvršava.
U donjem primjeru, definirali smo varijablu tjedan i ona se usklađuje s malim i malim slovima koji god je istinit. U ovom slučaju, tjedan je 2, dakle 2nd velika i mala slova se podudaraju, a izlaz je utorak:
<%@ 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>
Objašnjenje koda:
- Redak koda 10: Varijabla pod nazivom tjedan inicijalizirana je na 2 u oznakama izraza
- Redak koda 11: U EL oznakama pokreće se slučaj switch gdje se tjedan prosljeđuje kao parametar
- Redak koda 12 – 29: Svi slučajevi su spomenuti počevši od slučaja 0 do slučaja 5 gdje se vrijednost parametra tjedna podudara sa slučajevima, te se u skladu s tim izlaz ispisuje. U ovom slučaju vrijednost je 2, stoga će se u ovom slučaju izvršiti slučaj 2. Ovdje je "out" klasa JSP-a koja piše izlazni tok za generirani odgovor, a "println" je metoda te klase.
- Redak koda 30-32: Ako gore navedeni slučajevi ne uspije, premjestit će se na zadani dio i izvršit će se, gdje će se izjava ispisati u izlazni tok i uvjet je zatvoren
Kada izvršite gornji kod, imat ćete sljedeći izlaz.
Izlaz:
- Izlaz u ovom slučaju je utorak jer se poziva 2. slučaj.
Izjave petlje
JSP For petlja
Služi za ponavljanje elemenata za određeni uvjet, a ima tri parametra.
- Brojač varijable je inicijaliziran
- Uvjet dok se petlja mora izvršiti
- Brojač se mora povećati
Sintaksa petlje for:
For(inti=0;i<n;i++) { //block of statements }
U ovom primjeru imamo for petlju koja ponavlja sve dok brojač ne bude manji od zadanog broja:
<%@ 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>
Objašnjenje koda:
- Redak koda 10: Varijabla pod nazivom "num" inicijalizirana je na 5 u oznakama izraza
- Redak koda 11-14: U EL oznakama, "out" je klasa JSP-a, a "println" je metoda out koja ispisuje u izlaznom toku i pokreće se for petlja koja ima tri parametra:
- Varijabla i inicijalizirana je na 0,
- Uvjet je dan gdje je i manji od lokalne varijable num,
- I povećava se svakim ponavljanjem vremenske petlje.
U tijelu "forloop" postoji klasa JSP-a koja ispisuje u izlazni tok pomoću metode println gdje ispisujemo varijablu i.
Kada izvršite gornji kod, imat ćete sljedeći izlaz.
Izlaz:
- Izlaz Numbers su 0 1 2 3 4. U ovom primjeru, dajemo uvjet da sve dok brojač ne bude manji od jednakog varijabli, mora se izvršiti "for petlja". Broj je 5 tako da će petlja započeti od 0 i trajati do 4 (5 puta). Stoga izlaz.
JSP While petlja
Koristi se za ponavljanje elementi pri čemu ima jedan parametar stanja.
Sintaksa:
While(i<n) { //Block of statements }
U ovom primjeru, imamo while petlju koja će se ponavljati dok dan ne bude veći od jednakog brojaču:
<%@ 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>
Objašnjenje koda:
- Redak koda 10: Varijabla pod nazivom i inicijalizirana je na 1, a dan je 2 u oznakama izraza
- Redak koda 11-17: U EL oznakama postoji "while petlja" koja će se ponavljati sve dok ne postavimo uvjet da će dan biti veći ili jednak i varijabli biti istinito. (dan>=i) Unutar toga postoji "uvjet ako" (dan je jednak i) i "uvjet ako je" istinit tada će ispisati izlazni tok i izaći će iz petlje while inače se varijabla i povećava i petlja ponavlja.
Kada izvršimo kod, imat ćemo sljedeći izlaz
Izlaz je:
- Izlaz ovog koda bit će "njegov Monday".
JSP Operaulagatelji
JSP Operators podržava većinu svojih aritmetičkih i logičkih operatora koje podržava Java unutar oznaka jezika izraza (EL). Operatori koji se često koriste navedeni su u nastavku:
Sljedeći su operateri:
. | Pristupite svojstvu beana ili unosu karte |
[] | Pristup elementu polja ili popisa |
() | Grupirajte podizraz za promjenu redoslijeda vrednovanja |
+ | Dodatak |
- | Oduzimanje ili negacija vrijednosti |
* | Množenje |
/ ili div | Podjela |
% ili mod | Modulo (ostatak) |
== ili jed | Testirajte jednakost |
!= ili ne | Ispitajte nejednakost |
< ili lt | Testirajte za manje od |
> ili gt | Ispitajte za veće od |
<= ili le | Testirajte manje od ili jednako |
>= ili ge | Testirajte veće od ili jednako |
&& ili i | Testirajte logičko I |
|| ili ili | Testirajte logičko ILI |
! ili ne | Unarni Booleov komplement |
prazan | Testirajte prazne vrijednosti varijable |
U ovom primjeru
- Deklariramo dvije varijable num1 i num2, a zatim uzimamo varijablu num3, gdje koristimo JSP operator + by da zbrojimo num1 i num2 i dobijemo num3.
- Zatim provjeravamo uvjet nije li num3 jednak 0 pomoću JSP operatora (!= , >) i
- Zatim uzmite drugu varijablu num4 množenjem dva num1 i num2 dobivamo num4.
Ovi svi brojevi trebaju biti ispisani kao naš rezultat:
<%@ 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>
Objašnjenje koda:
- Redak koda 10: Varijabla pod nazivom num1 inicijalizirana je na 10, a num2 na 50 u oznakama izraza
- Redak koda 11: Varijabla num3 je zbroj num1 i num2 gdje koristimo operator zbrajanja
- Redak koda 12-16: U EL oznakama koristili smo OR uvjet koji je logički operator i aritmetičke operatore za provjeru je li num3 veći od 0 u if uvjetu. ILI se koristi kada je bilo koji uvjet istinit, u tom će slučaju ući u "ako slučaj" gdje množimo dva broja "num1" i "num2" i dobivamo izlaz u "num4" i ispisat će izlazni tok.
Kada izvršite gornji kod, imat ćete sljedeći izlaz.
Izlaz:
- Prvi izlaz je Broj 4 je 500 (varijabla num4 koja je num1*num2)
- Drugi izlaz je broj 3 je 60 (varijabla num3 koja je num1+num2)
Rezime
- JSP Expression Language (EL) olakšava pristup aplikaciji za podatke pohranjene u javabeans komponentama.
- Također omogućuje stvaranje izraza koji su i aritmetički i logički.
- Unutar EL tagova možemo koristiti cijele brojeve. Brojevi s pomičnim zarezom, nizovi i Booleove vrijednosti.
- U JSP-u također možemo koristiti petlje i izjave za donošenje odluka koristeći EL oznake