Εκμάθηση JSTL (JSP Standard Tag Library): Core & Παραδείγματα προσαρμοσμένων ετικετών

Πίνακας περιεχομένων:

Anonim

Το JSTL είναι μια τυπική βιβλιοθήκη ετικετών του JSP. Εδώ θα δούμε πώς η χρήση διαφορετικών ετικετών JSTL θα διευκολύνει την κωδικοποίηση JSP.

Σε αυτό το σεμινάριο, θα μάθετε-

  • Τι είναι το JSTL
  • JSTL Core
  • Προσαρμοσμένες ετικέτες JSP

Τι είναι το JSTL;

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

Πλεονεκτήματα του JSTL

  1. Τυπική ετικέτα : Παρέχει ένα πλούσιο επίπεδο της φορητής λειτουργικότητας των σελίδων JSP. Είναι εύκολο για έναν προγραμματιστή να κατανοήσει τον κώδικα.
  2. Code Neat and Clean : Καθώς οι scriplets μπερδεύουν τον προγραμματιστή, η χρήση του JSTL καθιστά τον κώδικα καθαρό και καθαρό.
  3. Αυτόματη υποστήριξη JavabeansInterospection : Έχει ένα πλεονέκτημα του JSTL έναντι των scripts JSP. Η γλώσσα έκφρασης JSTL χειρίζεται τον κώδικα JavaBean πολύ εύκολα. Δεν χρειάζεται να κατεβάζουμε τα αντικείμενα, τα οποία έχουν ανακτηθεί ως χαρακτηριστικά. Η χρήση κώδικα JSP scriptlets θα είναι περίπλοκη και το JSTL έχει απλοποιήσει αυτόν τον σκοπό.
  4. Ευκολότερο για τους ανθρώπους να διαβάζουν : Το JSTL βασίζεται σε XML, το οποίο μοιάζει πολύ με το HTML. Ως εκ τούτου, είναι εύκολο για τους προγραμματιστές να κατανοήσουν.
  5. Ευκολότερο να κατανοήσουν οι υπολογιστές : Εργαλεία όπως το Dreamweaver και η πρώτη σελίδα δημιουργούν όλο και περισσότερο κώδικα HTML. Τα εργαλεία HTML κάνουν εξαιρετική δουλειά στη μορφοποίηση κώδικα HTML. Ο κώδικας HTML αναμιγνύεται με τον κωδικό scriplet. Καθώς το JSTL εκφράζεται ως ετικέτες συμβατή με XML, είναι εύκολο για τη δημιουργία HTML να αναλύσει τον κώδικα JSTL μέσα στο έγγραφο.

JSTL Core

Οι βασικές ετικέτες είναι οι συχνότερα χρησιμοποιούμενες ετικέτες στο JSP. Παρέχουν υποστήριξη για

  • Επανάληψη
  • Υπό όρους λογική
  • Εξαίρεση αλιευμάτων
  • url προς τα εμπρός
  • Ανακατεύθυνση κ.λπ.

Για να χρησιμοποιήσουμε τις βασικές ετικέτες πρέπει πρώτα να καθορίσουμε τη βιβλιοθήκη ετικετών και κάτω είναι η σύνταξη για να συμπεριλάβουμε μια βιβλιοθήκη ετικετών.

Σύνταξη:

<%@ taglib prefix="c" uri=http://java.sun.com/jsp/jstl/core%>

Εδώ,

  • Το πρόθεμα μπορεί να χρησιμοποιηθεί για τον καθορισμό όλων των βασικών ετικετών και
  • Το uri είναι η βιβλιοθήκη του taglib από την οποία εισάγεται

Ας δούμε μερικές από τις βασικές ετικέτες,

1. Έξω:

  • Το αποτέλεσμα της έκφρασης εμφανίζεται στην ετικέτα εξόδου
  • Μπορεί να ξεφύγει απευθείας από τις ετικέτες XML. Ως εκ τούτου, δεν αξιολογούνται ως πραγματικές ετικέτες

Σύνταξη:

  • Εδώ η τιμή αντιπροσωπεύει πληροφορίες για την έξοδο και είναι υποχρεωτική
  • Η προεπιλογή είναι η αποτυχία εξόδου πληροφοριών και δεν είναι υποχρεωτική
  • escapeXML - Είναι αλήθεια εάν ξεφεύγει από χαρακτήρες XML.

Παράδειγμα:

Coretag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><κεφάλι>> Βασική ετικέτα JSP1 <άτομο>

Επεξήγηση του κωδικού:

Γραμμή κώδικα 3: Αυτό το πρόθεμα taglib απαιτείται για όλες τις ετικέτες και το πρόθεμα που προστίθεται είναι «c». Ως εκ τούτου, μπορεί να χρησιμοποιηθεί ως πρόθεμα για όλα τα coretags.

Γραμμή κώδικα 12: Εδώ χρησιμοποιούμε coretag έξω με το πρόθεμα "c" και αυτό θα εκτυπώσει την τιμή στην ετικέτα έκφρασης. Ως εκ τούτου, η έξοδος θα είναι το όνομα

Όταν εκτελείτε τον παραπάνω κώδικα, λαμβάνετε την ακόλουθη έξοδο:

Παραγωγή:

  • Λαμβάνουμε την τιμή ως όνομα από την κεντρική ετικέτα "έξω" που θα εκτυπωθεί στη ροή εξόδου.

2. Πιάστε

  • Παίρνει κάθε δυνατότητα εξαίρεσης που εμφανίζεται στο σώμα και εμφανίζεται ως έξοδος.
  • Χρησιμοποιείται για τον χειρισμό των σφαλμάτων και για την αντιμετώπισή τους.

Σύνταξη:

Εδώ το var αντιπροσωπεύει το όνομα της μεταβλητής, η οποία θα περιέχει εξαιρέσιμη δυνατότητα ρίψης.

Παράδειγμα:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%><κεφάλι>> Βασική ετικέτα JSP2 <άτομο><% int num = 10/0; %>Η εξαίρεση είναι: $ {guruException}

Επεξήγηση του κωδικού:

Γραμμή κώδικα 3: Αυτό το πρόθεμα taglib απαιτείται για όλες τις ετικέτες και το πρόθεμα που προστίθεται είναι «c», επομένως μπορεί να χρησιμοποιηθεί ως πρόθεμα για όλα τα coretag

Γραμμή κώδικα 11-13: Το Coretag catch χρησιμοποιείται για να πιάσει την εξαίρεση και να εκτυπώσει την εξαίρεση. Εδώ η εξαίρεση εμφανίζεται όταν 10/0 και αυτή η εξαίρεση έχει το όνομα "guruException".

Γραμμή κώδικα 14: Εκτυπώνουμε το "guruException".

Όταν εκτελέσετε τον κωδικό, θα λάβετε την ακόλουθη έξοδο:

Παραγωγή:

  • Λαμβάνουμε την αριθμητική εξαίρεση ως μηδέν και εκτυπώνεται στην έξοδο χρησιμοποιώντας τη μεταβλητή "guruException"

3. Εισαγωγή

  • Μπορούμε να εισαγάγουμε ένα άλλο περιεχόμενο αρχείων σε μια σελίδα JSP όπως κάναμε και στο JSP συμπεριλαμβανομένης της δράσης.
  • Εδώ μπορούμε επίσης να συμπεριλάβουμε τη διεύθυνση URL και τα περιεχόμενα θα εμφανίζονται σε αυτήν τη σελίδα.

Σύνταξη:

Εδώ το var είναι ένα μεταβλητό όνομα που είναι ένα αναγνωριστικό, το οποίο θα διατηρεί το όνομα αρχείου / uri.

Το uri είναι σχετικό όνομα αρχείου ή όνομα.

coretag_jsp31.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%><κεφάλι>> Core Tag JSP 31 <άτομο>

Coretag_jsp32.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><κεφάλι>> Εισαγωγή τίτλου εδώ <άτομο> Το αρχείο εμφανίζεται μετά την εισαγωγή 

Επεξήγηση του κωδικού:

Coretag_jsp31.jsp

Γραμμή κώδικα 3: Αυτό το πρόθεμα taglib απαιτείται για όλες τις ετικέτες και το πρόθεμα που προστίθεται είναι «c», επομένως μπορεί να χρησιμοποιηθεί ως πρόθεμα για όλα τα coretag

Γραμμή κώδικα 11-12: Εδώ εισάγουμε το αρχείο coretag_jsp32.jsp σε αυτό το αρχείο χρησιμοποιώντας ετικέτα εισαγωγής

Code Line13: Εδώ εκτυπώνουμε το αρχείο coretag_jsp32.jsp χρησιμοποιώντας έξω ετικέτα.

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

Παραγωγή:

  • Το Coretag_jsp32 εκτυπώνεται στην έξοδο καθώς αυτό το αρχείο εισήχθη στο coretag_jsp31.jsp.

4. για κάθε

  • Χρησιμοποιείται για να επαναλάβει τον αριθμό των στοιχείων σε μια σειρά δηλώσεων.
  • Είναι ίδιο με το Java forloop.

Σύνταξη:

  • Εδώ το var αντιπροσωπεύει μεταβλητό όνομα που θα διατηρεί το αντίθετο όνομα
  • Η αρχή αντιπροσωπεύει την τιμή αντίστροφης έναρξης
  • Το τέλος θα αντιπροσωπεύει την τελική του αξία

Παράδειγμα:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%><κεφάλι>> Βασική ετικέτα JSP4 <άτομο>

Επεξήγηση του κωδικού:

Γραμμή κώδικα 3: Αυτό το πρόθεμα taglib απαιτείται για όλες τις ετικέτες και το πρόθεμα που προστίθεται είναι «c», επομένως μπορεί να χρησιμοποιηθεί ως πρόθεμα για όλα τα coretag

Γραμμή κώδικα 11-13: Εδώ χρησιμοποιούμε το βρόχο "forEach" όπου το όνομα της μεταβλητής είναι "gurucount", το οποίο έχει αρχίσει να μετράει ως 5 και το τέλος μετράει ως 10. Εκτυπώνουμε τη μεταβλητή gurucount που έχει αριθμούς από 5 έως 10.

Όταν εκτελείτε τον κωδικό, λαμβάνετε την ακόλουθη έξοδο

Παραγωγή:

  • Η έξοδος που λαμβάνουμε ξεκινά από 5 έως 10.

5. Εάν

  • Χρησιμοποιείται για συνθήκες δοκιμών.
  • Εάν η ετικέτα χρησιμοποιείται για να ελέγξει μια συνθήκη εάν είναι αλήθεια ή όχι βάσει αυτού, θα εκτελεστεί το μπλοκ κώδικα.

Σύνταξη:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%><κεφάλι>> Βασική ετικέτα JSP5 <άτομο>

Επεξήγηση του κωδικού:

Γραμμή κώδικα 3: Αυτό το πρόθεμα taglib απαιτείται για όλες τις ετικέτες και το πρόθεμα που προστίθεται είναι «c», επομένως μπορεί να χρησιμοποιηθεί ως πρόθεμα για όλα τα coretag

Γραμμή κώδικα 11: Εδώ ορίζουμε τη μεταβλητή που ονομάζεται ως μέτρηση σε 100

Γραμμή κώδικα 12-14: Εδώ χρησιμοποιούμε το "if condition" όπου ελέγχουμε αν η μέτρηση είναι ίση με 100. Είναι ίση με 100, τότε λαμβάνουμε την έξοδο ως "Η μέτρηση είναι 100".

Όταν εκτελείτε τον παραπάνω κώδικα, λαμβάνετε την ακόλουθη έξοδο

Παραγωγή:

  • Καθώς η συνθήκη "if" ισχύει, λαμβάνουμε την έξοδο ως "Η μέτρηση είναι 100".

6. ανακατεύθυνση:

  • Χρησιμοποιείται για ανακατεύθυνση της τρέχουσας σελίδας σε άλλη διεύθυνση URL παρέχοντας τη σχετική διεύθυνση URL αυτής της ετικέτας.
  • Υποστηρίζει σχετικές διευθύνσεις URL περιβάλλοντος

Σύνταξη:

Εδώ το url είναι σχετικό url στο οποίο πρέπει να ανακατευθυνθεί και το όνομα περιβάλλοντος της τοπικής εφαρμογής ιστού.

Παράδειγμα:

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%><κεφάλι>> Βασική ετικέτα JSP6 <άτομο>

Επεξήγηση του κωδικού:

Γραμμή κώδικα 3: Αυτό το πρόθεμα taglib απαιτείται για όλες τις ετικέτες και το πρόθεμα που προστίθεται είναι «c», επομένως μπορεί να χρησιμοποιηθεί ως πρόθεμα για όλα τα coretag

Γραμμή κώδικα 11: Εδώ χρησιμοποιούμε την "ετικέτα ανακατεύθυνσης", όπου καθορίζουμε το όνομα urln και όταν κάνουμε κλικ σε αυτήν τη σελίδα ανακατευθύνει στον ιστότοπο που έχει δοθεί για ανακατεύθυνση.

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

Παραγωγή:

  • Παίρνουμε την έξοδο url9999.com που ανακατευθύνεται από coretag_jsp6.jsp

Προσαρμοσμένες ετικέτες JSP

  • Είναι ένα στοιχείο γλώσσας JSP που καθορίζεται από το χρήστη.
  • Όταν το JSP μεταφράζεται σε servlet, η προσαρμοσμένη ετικέτα μετατρέπεται σε κλάση που αναλαμβάνει δράση σε ένα αντικείμενο και ονομάζεται χειριστής ετικετών.
  • Αυτές οι ενέργειες κατά την εκτέλεση του servlet επικαλούνται το κοντέινερ ιστού.
  • Για να δημιουργήσουμε την προσαρμοσμένη από τον χρήστη προσαρμοσμένη ετικέτα, πρέπει να δημιουργήσουμε τον χειριστή ετικετών που θα επεκτείνει το SimpleTagSupport και πρέπει να παρακάμψει τη μέθοδο doTag ().
  • Πρέπει να δημιουργήσουμε TLD όπου πρέπει να χαρτογραφήσουμε το αρχείο τάξης στο TLD.

Πλεονεκτήματα προσαρμοσμένων ετικετών στο JSP:

  • Φορητό - Μια ενέργεια που περιγράφεται σε μια βιβλιοθήκη ετικετών πρέπει να μπορεί να χρησιμοποιηθεί σε οποιοδήποτε κοντέινερ JSP.
  • Απλός - Οι μη εξελιγμένοι χρήστες πρέπει να είναι σε θέση να κατανοήσουν και να χρησιμοποιήσουν αυτόν τον μηχανισμό. Οι προμηθευτές της λειτουργικότητας JSP πρέπει να είναι εύκολο να το κάνουν διαθέσιμο στους χρήστες ως ενέργειες.
  • Εκφραστικός - Ο μηχανισμός πρέπει να υποστηρίζει ένα ευρύ φάσμα ενεργειών, συμπεριλαμβανομένων ένθετων ενεργειών, στοιχείων δέσμης ενεργειών μέσα σε σώματα δράσης, δημιουργία, χρήση και ενημέρωση μεταβλητών δέσμης ενεργειών.
  • Μπορεί να χρησιμοποιηθεί από διαφορετικές γλώσσες δέσμης ενεργειών - Παρόλο που η προδιαγραφή JSP ορίζει μόνο τη σημασιολογία για σενάρια στη γλώσσα προγραμματισμού Java, θέλουμε να αφήσουμε ανοιχτή τη δυνατότητα άλλων γλωσσών δέσμης ενεργειών.
  • Χτισμένο πάνω σε υπάρχουσες έννοιες και μηχανήματα - Δεν θέλουμε να ανακαλύψουμε εκ νέου τους λευκούς. Επίσης, θέλουμε να αποφύγουμε μελλοντικές συγκρούσεις όποτε μπορούμε να τις προβλέψουμε

Σύνταξη:

Σκεφτείτε ότι δημιουργούμε την ετικέτα testGuru και μπορούμε να χρησιμοποιήσουμε την τάξη usetaghandlertestTag, η οποία θα αντικαταστήσει τη μέθοδο doTag ().

Class testTag extends SimpleTagSupport{ public void doTag()}

Επίσης, θα πρέπει να χαρτογραφήσουμε αυτήν την κλάση testTag σε TLD (Tag Library Descriptor), καθώς το κοντέινερ JSP θα δημιουργήσει αυτόματα μια αντιστοίχιση μεταξύ του αρχείου κλάσης και του uri που έχει αναφερθεί στο αρχείο TLD.

Διεπαφή ετικέτας JSP

  • Αυτή η τάξη θα πρέπει να επεκτείνει την κατηγορία SimpleTagSupport.
  • Αυτή η κλάση θα πρέπει να παρακάμψει τη μέθοδο doTag () που είναι μέρος της κλάσης SimpleTagSupport (η παράκαμψη είναι μια μέθοδος που κληρονομείται από τη μητρική κλάση).
  • Αυτή η διεπαφή είναι μια δευτερεύουσα διεπαφή της διεπαφής JSPTag.
  • Παρέχει μεθόδους για εκτέλεση στην αρχή και στο τέλος της ετικέτας.
  • Επίσης, πρέπει να χαρτογραφήσουμε αυτήν την τάξη σε TLD, δηλαδή περιγραφή βιβλιοθήκης ετικετών

Εξετάζουμε στο παρακάτω παράδειγμα

Μέθοδος διεπαφής ετικέτας

  • Το doTag () είναι μια μέθοδος που πρέπει να παρακάμψουμε και θα έχει τα περιεχόμενα της ετικέτας.
  • Χρειάζεται το τρέχον JSP Context χρησιμοποιώντας το getJSPContext ()

Παράδειγμα:

Customtag_jsp1.jsp

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ taglib prefix = "ex" uri = "WEB-INF / custom.tld"%><κεφάλι>> Προσαρμοσμένη ετικέτα <άτομο>

Custom.tld

 1.0  2.0  Δοκιμή TLD <ετικέτα> guruTag  demotest.guruTag  κενό 

guruTag.java (TagHandler)

demotest πακέτουεισαγωγή javax.servlet.jsp.tagext. *;εισαγωγή javax.servlet.jsp. *;εισαγωγή java.io. *;δημόσια τάξη γκουρού επεκτείνει το SimpleTagSupport {public void doTag () ρίχνει JspException, IOException{JspWriter out = getJspContext (). GetOut ();out.println ("Ετικέτα Guru");}}

Επεξήγηση του κωδικού:

guruTag.java (TagHandler)

Γραμμή κώδικα 6: Η τάξη guruTag επεκτείνει την τάξη SimpleTagSupport που υπάρχει στο βάζο javax.servlet.JSP

Γραμμή κώδικα 7: Εδώ παρακάμπτουμε τη μέθοδο doTag () που ρίχνει το JspException και το IOException.

Γραμμή κώδικα 9-10: Σε αυτήν τη μέθοδο, ο κωδικός θα ενσωματωθεί σε προσαρμοσμένη ετικέτα που θα καλείται. Παίρνουμε ένα αντικείμενο του JspWriter, και αυτό θα εκτυπώσει το "Guru Tag."

Custom.tld

Γραμμή κώδικα 6: Εδώ το όνομα της προσαρμοσμένης ετικέτας είναι "guruTag".

Γραμμή κώδικα 7: Η κατηγορία ετικετών είναι taghandlerclass, δηλαδή, guruTag.java. Παίρνει την πλήρη διαδρομή του αρχείου χειριστή που περιλαμβάνει τη διαδρομή καταλόγου της θέσης του αρχείου.

Customtag_jsp1.jsp

Γραμμή κώδικα 3 : Αυτό το πρόθεμα taglib απαιτείται για όλες τις ετικέτες και το πρόθεμα που προστίθεται είναι «ex», επομένως μπορεί να χρησιμοποιηθεί ως πρόθεμα για όλα τα coretags και το uri είναι custom.tld που χαρτογραφεί τον χειριστή ετικετών.

Γραμμή κώδικα 11: Εδώ ορίζουμε την προσαρμοσμένη ετικέτα "guruTag", η οποία θα καλέσει τη μέθοδο χειριστή doTag () και θα εκτελεστεί ο κώδικας που περιέχει.

Όταν εκτελείτε τον παραπάνω κώδικα, λαμβάνετε την ακόλουθη έξοδο

Παραγωγή:

  • Παίρνουμε την έξοδο ως "GuruTag" από το guruTag.java, δηλαδή το TagHandler, το οποίο αντικαθιστά τη μέθοδο doTag () και που εκτυπώνει το "Guru Tag" ως έξοδο.

Περίληψη:

  • Σε αυτήν την ενότητα, μάθαμε για την τυπική βιβλιοθήκη ετικετών JSP στην οποία κάναμε βασικές ετικέτες και προσαρμοσμένες ετικέτες.
  • Οι βασικές ετικέτες περιλαμβάνουν, εάν, ανακατευθύνετε, εισαγάγετε, πιάστε ετικέτες που ήταν ετικέτες που χρησιμοποιήθηκαν για βασικούς σκοπούς στο JSP.
  • Επίσης, κάναμε προσαρμοσμένες ετικέτες όπου μπορούμε να ορίσουμε τις ετικέτες και να τις χρησιμοποιήσουμε στο JSP