Γλώσσα έκφρασης στο JSP

Τι είναι η Γλώσσα Έκφρασης (EL);

Η γλώσσα έκφρασης (EL) είναι μηχανισμός που απλοποιεί την προσβασιμότητα των δεδομένων που είναι αποθηκευμένα Java στοιχείο bean και άλλο αντικείμενο όπως αίτημα, συνεδρία και εφαρμογή κ.λπ.

Υπάρχουν πολλοί τελεστές στο JSP που χρησιμοποιούνται στα EL όπως αριθμητικοί και λογικοί τελεστές για την εκτέλεση μιας έκφρασης. Εισήχθη στο JSP 2.0

JSP Σύνταξη Γλώσσας Έκφρασης (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

  • Η έκφραση είναι: 3 (Όπως οι αριθμοί 1+2 θα προστεθούν και θα χρησιμεύσουν ως έξοδος)

Δηλώσεις ελέγχου ροής:

Το JSP παρέχει τη δύναμη του Java να ενσωματωθεί στην εφαρμογή. Μπορούμε να χρησιμοποιήσουμε όλα τα API και τα δομικά στοιχεία του Java in Προγραμματισμός JSP συμπεριλαμβανομένων των δηλώσεων ροής ελέγχου που περιλαμβάνουν τη λήψη αποφάσεων και τις δηλώσεις βρόχου.

Υπάρχουν δύο τύποι δηλώσεων ελέγχου ροής που περιγράφονται παρακάτω.

  1. Δηλώσεις λήψης αποφάσεων
  2. Δηλώσεις βρόχου

Δηλώσεις λήψης αποφάσεων:

Η δήλωση λήψης αποφάσεων στο JSP βασίζεται στο εάν το σύνολο συνθηκών είναι αληθές ή ψευδές. Η δήλωση θα συμπεριφερθεί ανάλογα.

Υπάρχουν δύο τύποι δηλώσεων λήψης αποφάσεων που περιγράφονται παρακάτω:

  1. Αν – αλλιώς
  2. αλλαγή

JSP Αν-άλλο

Η δήλωση "If else" είναι βασική για όλες τις εντολές ροής ελέγχου και λέει στο πρόγραμμα να εκτελέσει το συγκεκριμένο τμήμα κώδικα μόνο εάν η συγκεκριμένη δοκιμή αξιολογηθεί ως true.

Αυτή η συνθήκη χρησιμοποιείται για τον έλεγχο για περισσότερες από μία συνθήκες εάν είναι αληθείς ή ψευδείς.

  • Εάν η πρώτη συνθήκη είναι αληθής τότε εκτελείται το "if block" και
  • αν είναι ψευδής τότε εκτελείται το "else 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: Εάν η παραπάνω συνθήκη αποτύχει, τότε θα μετακινηθεί σε άλλο τμήμα για όλες τις άλλες περιπτώσεις όπου η πρόταση θα εκτυπωθεί στη ροή εξόδου και η συνθήκη είναι κλειστή

Όταν εκτελέσετε τον παραπάνω κώδικα, θα έχετε την ακόλουθη έξοδο.

Παραγωγή:

JSP Αν-άλλο

  • Δεδομένου ότι ο μήνας που έχουμε είναι 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: Η μεταβλητή με όνομα week αρχικοποιείται σε 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" είναι η μέθοδος που εκτυπώνει στη ροή εξόδου και ξεκινά ο βρόχος for που έχει τρεις παραμέτρους:
    • Η μεταβλητή i αρχικοποιείται σε 0,
    • Δίνεται η συνθήκη όπου i πρέπει να είναι μικρότερος από τον αριθμό της τοπικής μεταβλητής,
    • Και το i αυξάνεται κάθε φορά που επαναλαμβάνεται ο βρόχος.

Στο σώμα του "forloop", υπάρχει μια κλάση JSP που εκτυπώνεται στη ροή εξόδου χρησιμοποιώντας τη μέθοδο println όπου εκτυπώνουμε τη μεταβλητή i.

Όταν εκτελέσετε τον παραπάνω κώδικα, θα έχετε την ακόλουθη έξοδο.

Παραγωγή:

Βρόχος JSP For

  • Παραγωγή Numbers είναι 0 1 2 3 4. Σε αυτό το παράδειγμα, δίνουμε την προϋπόθεση ότι έως ότου ο μετρητής είναι μικρότερος από ίσος με μια μεταβλητή, πρέπει να εκτελεστεί το "for loop". Ο αριθμός είναι 5, οπότε ο βρόχος θα ξεκινά από το 0 και θα τρέχει έως το 4 (5 φορές). Εξ ου και η έξοδος.

Βρόχος JSP while

Χρησιμοποιείται για την επανάληψη του στοιχεία όπου έχει μία παράμετρο της συνθήκης.

Σύνταξη:

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 while

  • Η έξοδος αυτού του κωδικού θα είναι «του Monday".

JSP Operaκορμοί

JSP OperaΤο tors υποστηρίζει τους περισσότερους από τους αριθμητικούς και λογικούς τελεστές του που υποστηρίζονται από Ιάβα μέσα σε ετικέτες γλώσσας έκφρασης (EL). Οι τελεστές που χρησιμοποιούνται συχνά αναφέρονται παρακάτω:

Ακολουθούν οι χειριστές:

. Πρόσβαση σε μια ιδιοκτησία φασολιών ή μια καταχώριση χάρτη
[] Πρόσβαση σε έναν πίνακα ή ένα στοιχείο λίστας
() Ομαδοποιήστε μια υποέκφραση για να αλλάξετε τη σειρά αξιολόγησης
+ Προσθήκη
- Αφαίρεση ή άρνηση μιας τιμής
* Πολλαπλασιασμός
/ ή div διαίρεση
% ή mod Modulo (υπόλοιπο)
== ή εξ Δοκιμή για ισότητα
!= ή νε Δοκιμή για ανισότητα
< ή lt Δοκιμάστε για λιγότερο από
> ή gt Δοκιμή για μεγαλύτερο από
<= ή λε Δοκιμάστε για λιγότερο ή ίσο
>= ή ge Ελέγξτε για μεγαλύτερο ή ίσο
&& ή και Δοκιμή για λογικό ΚΑΙ
|| ή ή Δοκιμή για λογικό Ή
! ή όχι Unary Boolean συμπλήρωμα
Αδειάστε Δοκιμή για κενές τιμές μεταβλητής

Σε αυτό το παράδειγμα,

  • Δηλώνουμε δύο μεταβλητές 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, χρησιμοποιήσαμε μια συνθήκη OR που είναι λογικός τελεστής και αριθμητικοί τελεστές για να ελέγξουμε εάν το num3 είναι μεγαλύτερο από 0 στη συνθήκη if. Το OR χρησιμοποιείται όταν ισχύει οποιαδήποτε συνθήκη, σε αυτήν την περίπτωση θα εισαγάγει το "εάν περίπτωση" όπου πολλαπλασιάζουμε δύο αριθμούς "num1" και "num2" και βγάζουμε έξοδο στο "num4" και θα εκτυπώσει τη ροή εξόδου.

Όταν εκτελέσετε τον παραπάνω κώδικα, θα έχετε την ακόλουθη έξοδο.

Παραγωγή:

JSP Operaκορμοί

  • Η πρώτη έξοδος είναι ο αριθμός 4 είναι 500 (μεταβλητή num4 που είναι num1*num2)
  • Η δεύτερη έξοδος είναι ο αριθμός 3 είναι 60 (μεταβλητή num3 η οποία num1+num2)

Περίληψη

  • JSP Expression Language (EL) διευκολύνει την πρόσβαση στην εφαρμογή για τα δεδομένα που είναι αποθηκευμένα στα στοιχεία javabeans.
  • Επιτρέπει επίσης τη δημιουργία των εκφράσεων που είναι τόσο αριθμητικές όσο και λογικές.
  • Μέσα στις ετικέτες EL μπορούμε να χρησιμοποιήσουμε ακέραιους αριθμούς. Αριθμοί κινητής υποδιαστολής, συμβολοσειρές και τιμές Boolean.
  • Στο JSP μπορούμε επίσης να χρησιμοποιήσουμε βρόχους και δηλώσεις λήψης αποφάσεων χρησιμοποιώντας ετικέτες EL