Οδηγίες ΚΕΠ
Τι είναι οι οδηγίες JSP;
- Οι οδηγίες JSP είναι τα μηνύματα προς το κοντέινερ JSP. Παρέχουν γενικές πληροφορίες για μια ολόκληρη σελίδα JSP.
- Οι οδηγίες JSP χρησιμοποιούνται για να δώσουν ειδικές οδηγίες σε ένα κοντέινερ για μετάφραση του JSP σε κώδικα servlet.
- Στη φάση του κύκλου ζωής του JSP, το JSP πρέπει να μετατραπεί σε servlet που είναι η φάση μετάφρασης.
- Δίνουν οδηγίες στο κοντέινερ για τον τρόπο χειρισμού ορισμένων πτυχών της επεξεργασίας JSP
- Οι οδηγίες μπορούν να έχουν πολλά χαρακτηριστικά διαχωρισμένα με κόμμα ως ζεύγη κλειδιού-τιμής.
- Στο JSP, η οδηγία περιγράφεται στο
<%@ %>
ετικέτες.
Σύνταξη της Οδηγίας:
<%@ directive attribute="" %>
Τύποι Οδηγιών στο JSP
Υπάρχουν τρεις τύποι οδηγιών στο JSP:
- Οδηγία σελίδας
- Συμπεριλάβετε την οδηγία
- Οδηγία Taglib
Κάθε ένα από αυτά περιγράφεται αναλυτικά παρακάτω με παραδείγματα:
1) Οδηγία Σελίδα JSP
Οδηγία Σύνταξης Σελίδας:
<%@ page…%>
- Παρέχει χαρακτηριστικά που εφαρμόζονται σε ολόκληρη τη σελίδα JSP.
- Ορίζει χαρακτηριστικά που εξαρτώνται από τη σελίδα, όπως η γλώσσα δέσμης ενεργειών, η σελίδα σφάλματος και οι απαιτήσεις προσωρινής αποθήκευσης.
- Χρησιμοποιείται για την παροχή οδηγιών σε ένα κοντέινερ που αφορά την τρέχουσα σελίδα JSP.
Ακολουθεί η λίστα με τα χαρακτηριστικά που σχετίζονται με την οδηγία σελίδων:
- Γλώσσα
- Επεκτείνει
- εισαγωγή
- Τύπος περιεχομένου
- πληροφορίες
- Συνεδρίαση
- isThreadSafe
- αυτόματη έκπλυση
- ρυθμιστικό
- IsErrorPage
- Κωδικοποίηση σελίδας
- errorPage
- isELIgonored
Περισσότερες λεπτομέρειες για κάθε χαρακτηριστικό
1) γλώσσα: Ορίζει το γλώσσα προγραμματισμού (υποκείμενη γλώσσα) που χρησιμοποιείται στη σελίδα.
Σύνταξη της γλώσσας:
<%@ page language="value" %>
Εδώ η τιμή είναι η γλώσσα προγραμματισμού (υποκείμενη γλώσσα)
Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Επεξήγηση κωδικού: Στο παραπάνω παράδειγμα, η τιμή γλώσσας του χαρακτηριστικού είναι Java που είναι η υποκείμενη γλώσσα σε αυτή την περίπτωση. Ως εκ τούτου, ο κώδικας στις ετικέτες έκφρασης θα μεταγλωττιστεί χρησιμοποιώντας μεταγλωττιστή java.
2) Επεκτείνεται: Αυτό το χαρακτηριστικό χρησιμοποιείται για να επεκτείνει (κληρονομήσει) την κλάση όπως κάνει η JAVA
Σύνταξη επεκτάσεων:
<%@ page extends="value" %>
Εδώ η τιμή αντιπροσωπεύει την κλάση από την οποία πρέπει να κληρονομηθεί.
Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
Επεξήγηση του κώδικα: Στον παραπάνω κώδικα, το JSP επεκτείνει το DemoClass το οποίο βρίσκεται εντός του πακέτου demotest και θα επεκτείνει όλες τις δυνατότητες κλάσης.
3) Εισαγωγή: Αυτό το χαρακτηριστικό είναι το χαρακτηριστικό που χρησιμοποιείται περισσότερο σε χαρακτηριστικά οδηγιών σελίδας. Χρησιμοποιείται για να πει στο κοντέινερ να εισάγει άλλες κλάσεις java, διεπαφές, enums, κ.λπ. ενώ δημιουργεί κώδικα servlet. Είναι παρόμοιο με δηλώσεις εισαγωγής σε κλάσεις java, διεπαφές.
Σύνταξη εισαγωγής:
<%@ page import="value" %>
Εδώ η τιμή υποδεικνύει τις κλάσεις που πρέπει να εισαχθούν.
Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" import="java.util.Date" pageEncoding="ISO-8859-1"%>
Επεξήγηση του κώδικα:
Στον παραπάνω κώδικα, εισάγουμε την κλάση Date από το πακέτο java.util (όλες τις κατηγορίες βοηθητικών προγραμμάτων) και μπορεί να χρησιμοποιήσει όλες τις μεθόδους της παρακάτω κλάσης.
4) Τύπος περιεχομένου:
- Καθορίζει το σχήμα κωδικοποίησης χαρακτήρων, δηλαδή χρησιμοποιείται για να ορίσει τον τύπο περιεχομένου και το σύνολο χαρακτήρων της απάντησης
- Ο προεπιλεγμένος τύπος contentType είναι
"text/html; charset=ISO-8859-1"
.
Σύνταξη του περιεχομένουΤύπος:
<%@ page contentType="value" %>
Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Επεξήγηση του κώδικα:
Στον παραπάνω κώδικα, ο τύπος περιεχομένου ορίζεται ως κείμενο/html, ορίζει κωδικοποίηση χαρακτήρων για JSP και για σελίδα απόκρισης που δημιουργείται.
5) πληροφορίες
- Καθορίζει μια συμβολοσειρά στην οποία είναι δυνατή η πρόσβαση με τη μέθοδο getServletInfo().
- Αυτό το χαρακτηριστικό χρησιμοποιείται για να ορίσετε την περιγραφή του servlet.
Σύνταξη πληροφοριών:
<%@ page info="value" %>
Εδώ, η τιμή αντιπροσωπεύει τις πληροφορίες servlet.
Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Επεξήγηση του κώδικα:
Στον παραπάνω κώδικα, η συμβολοσειρά "Guru Directive JSP" μπορεί να ανακτηθεί από τη διεπαφή servlet χρησιμοποιώντας getServletInfo()
6) Συνεδρία
- Η σελίδα JSP δημιουργεί περίοδο λειτουργίας από προεπιλογή.
- Μερικές φορές δεν χρειάζεται να δημιουργηθεί μια περίοδος σύνδεσης στο JSP, και ως εκ τούτου, μπορούμε να ορίσουμε αυτό το χαρακτηριστικό σε false σε αυτήν την περίπτωση. Η προεπιλεγμένη τιμή του χαρακτηριστικού περιόδου λειτουργίας είναι αληθής και η περίοδος λειτουργίας δημιουργείται. Όταν έχει οριστεί σε false, τότε μπορούμε να υποδείξουμε στον μεταγλωττιστή να μην δημιουργεί την περίοδο λειτουργίας από προεπιλογή.
Σύνταξη συνεδρίας:
<%@ page session="true/false"%>
Σε αυτήν την περίπτωση, το χαρακτηριστικό συνεδρίας μπορεί να οριστεί σε true ή false
Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="false"%>
Επεξήγηση κωδικού:
Στο παραπάνω παράδειγμα, το χαρακτηριστικό session έχει οριστεί σε "false", επομένως υποδεικνύουμε ότι δεν θέλουμε να δημιουργήσουμε καμία συνεδρία σε αυτό το JSP
7) isThreadSafe:
- Καθορίζει το μοντέλο νήματος για το παραγόμενο servlet.
- Υποδεικνύει το επίπεδο ασφάλειας νήματος που εφαρμόζεται στη σελίδα.
- Η προεπιλεγμένη τιμή του είναι true τόσο ταυτόχρονη
- Μπορούμε να χρησιμοποιήσουμε αυτό το χαρακτηριστικό για να εφαρμόσουμε τη διεπαφή SingleThreadModel σε δημιουργημένο servlet.
- Εάν το θέσουμε σε false, τότε θα εφαρμόσει το SingleThreadModel και θα έχει πρόσβαση σε οποιαδήποτε κοινόχρηστα αντικείμενα και μπορεί να προκαλέσει ασυνέπεια.
Σύνταξη του isThreadSafe:
<% @ page isThreadSafe="true/false" %>
Εδώ το true ή false αντιπροσωπεύει εάν υπάρχει συγχρονισμός, ορίστε τον ως true και ορίστε τον ως false.
Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isThreadSafe="true"%>
Επεξήγηση του κώδικα:
Στον παραπάνω κώδικα, το isThreadSafe έχει οριστεί σε "true", επομένως θα γίνει συγχρονισμός και μπορούν να χρησιμοποιηθούν πολλαπλά νήματα.
8) Αυτόματη έκπλυση:
Αυτό το χαρακτηριστικό καθορίζει ότι η έξοδος στην προσωρινή μνήμη θα πρέπει να ξεπλένεται αυτόματα ή όχι και η προεπιλεγμένη τιμή αυτού του χαρακτηριστικού είναι αληθής. Εάν η τιμή οριστεί σε false, η προσωρινή μνήμη δεν θα ξεπλυθεί αυτόματα και εάν είναι πλήρης, θα λάβουμε εξαίρεση. Όταν το buffer δεν είναι κανένα, τότε το false είναι αθέμιτο και δεν υπάρχει buffering, οπότε θα ξεπλυθεί αυτόματα.
Σύνταξη του autoFlush:
<% @ page autoFlush="true/false" %>
Εδώ το true/false αντιπροσωπεύει αν πρέπει να γίνει buffering ή όχι
Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
Επεξήγηση του κώδικα:
Στον παραπάνω κώδικα, η αυτόματη έκπλυση έχει οριστεί σε false και ως εκ τούτου η αποθήκευση στην προσωρινή μνήμη δεν θα γίνει και έχει ξεπλύνει χειροκίνητα την έξοδο.
9) Buffer:
- Χρησιμοποιώντας αυτό το χαρακτηριστικό, το αντικείμενο απόκρισης εξόδου μπορεί να αποθηκεύεται στην προσωρινή μνήμη.
- Μπορούμε να ορίσουμε το μέγεθος της προσωρινής αποθήκευσης που θα γίνει χρησιμοποιώντας αυτό το χαρακτηριστικό και το προεπιλεγμένο μέγεθος είναι 8KB.
- Κατευθύνει το servlet να γράψει το buffer πριν γράψει στο αντικείμενο απόκρισης.
Σύνταξη του buffer:
<%@ page buffer="value" %>
Εδώ η τιμή αντιπροσωπεύει το μέγεθος του buffer που πρέπει να καθοριστεί. Εάν δεν υπάρχει buffer, τότε μπορούμε να γράψουμε ως κανένα, και αν δεν αναφέρουμε καμία τιμή, τότε η προεπιλογή είναι 8KB
Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
Επεξήγηση του κώδικα:
Στον παραπάνω κώδικα, το μέγεθος του buffer αναφέρεται ως 16 KB όπου το buffer θα ήταν αυτού του μεγέθους
10) isErrorPage:
- Υποδεικνύει ότι η Σελίδα JSP που έχει errorPage θα ελεγχθεί σε άλλη σελίδα JSP
- Οποιοδήποτε αρχείο JSP που δηλώνεται με το χαρακτηριστικό "isErrorPage" μπορεί στη συνέχεια να λάβει εξαιρέσεις από άλλες σελίδες JSP που έχουν σελίδες σφαλμάτων.
- Εξαιρέσεις είναι διαθέσιμες μόνο σε αυτές τις σελίδες.
- Η προεπιλεγμένη τιμή είναι ψευδής.
Σύνταξη του isErrorPage:
<%@ page isErrorPage="true/false"%>
Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isErrorPage="true"%>
Επεξήγηση του κώδικα:
Στον παραπάνω κώδικα, το isErrorPage ορίζεται ως true. Ως εκ τούτου, θα ελέγξει οποιοδήποτε άλλο JSP έχει σύνολο χαρακτηριστικών errorPage (που περιγράφεται στο επόμενο χαρακτηριστικό) και μπορεί να χειριστεί εξαιρέσεις.
11) Κωδικοποίηση σελίδας:
Το χαρακτηριστικό "pageEncoding" ορίζει την κωδικοποίηση χαρακτήρων για τη σελίδα JSP. Η προεπιλογή ορίζεται ως "ISO-8859-1" εάν δεν έχει καθοριστεί κάποια άλλη.
Σύνταξη κωδικοποίησης σελίδας:
<%@ page pageEncoding="vaue" %>
Εδώ η τιμή καθορίζει την τιμή συνόλου χαρακτήρων για JSP
Παράδειγμα:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isErrorPage="true"%>
Επεξήγηση του κώδικα:
Στον παραπάνω κωδικό το "pageEncoding" έχει οριστεί στο προεπιλεγμένο σύνολο χαρακτήρων ISO-8859-1
12) Σελίδα σφάλματος:
Αυτό το χαρακτηριστικό χρησιμοποιείται για τον ορισμό της σελίδας σφάλματος για τη σελίδα JSP εάν το JSP κάνει μια εξαίρεση και στη συνέχεια ανακατευθύνει στη σελίδα εξαίρεσης.
Σύνταξη errorPage:
<%@ page errorPage="value" %>
Εδώ η τιμή αντιπροσωπεύει την τιμή της σελίδας σφάλματος JSP
Παράδειγμα:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%>
Επεξήγηση του κώδικα:
Στον παραπάνω κώδικα, για να χειριστούμε τις εξαιρέσεις έχουμε το erroHandler.jsp
13) isELIgnored:
- Το IsELIgnored είναι ένα χαρακτηριστικό σημαίας όπου πρέπει να αποφασίσουμε αν θα αγνοήσουμε τις ετικέτες EL ή όχι.
- Ο τύπος δεδομένων του είναι java enum και η προεπιλεγμένη τιμή είναι false, επομένως το EL είναι ενεργοποιημένο από προεπιλογή.
Σύνταξη του isELIgnored:
<%@ page isELIgnored="true/false" %>
Εδώ, το true/false αντιπροσωπεύει την τιμή του EL είτε πρέπει να αγνοηθεί είτε όχι.
Παράδειγμα:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="true"%>
Επεξήγηση του κώδικα:
Στον παραπάνω κώδικα, το isELIgnored είναι αληθές και ως εκ τούτου Γλώσσα έκφρασης (EL) αγνοείται εδώ. Στο παρακάτω παράδειγμα χρησιμοποιούμε τέσσερα χαρακτηριστικά (γραμμή κώδικα 1-2)
Παράδειγμα με τέσσερις ιδιότητες
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="false"%> <%@page import="java.util.Date" %> <!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>Directive Guru JSP1</title> </head> <body> <a>Date is:</a> <%= new java.util.Date() %> </body> </html>
Επεξήγηση του κώδικα:
Κωδικός Γραμμή 1-2: Εδώ έχουμε ορίσει τέσσερις ιδιότητες π.χ
- Γλώσσα: Ορίζεται ως Java ως γλώσσα προγραμματισμού
- contentType: ορίστε ως κείμενο/html για να πείτε στον μεταγλωττιστή ότι η html πρέπει να είναι μορφή
- PageEncoding: το προεπιλεγμένο σύνολο χαρακτήρων ορίζεται σε αυτό το χαρακτηριστικό
- isELIgnored: Η ετικέτα έκφρασης είναι ψευδής, επομένως δεν αγνοείται
Κωδικός Γραμμή 3: Εδώ έχουμε χρησιμοποιήσει το χαρακτηριστικό εισαγωγής και εισάγει την "Κλάση ημερομηνίας" που είναι από Java util πακέτο και προσπαθούμε να εμφανίσουμε την τρέχουσα ημερομηνία στον κώδικα.
Όταν εκτελέσετε τον παραπάνω κώδικα, θα λάβετε την ακόλουθη έξοδο
Παραγωγή:
- Ημερομηνία είναι: Τρέχουσα ημερομηνία χρησιμοποιώντας τη μέθοδο ημερομηνίας της κλάσης ημερομηνίας
2) Συμπεριλάβετε την οδηγία JSP
- JSP "include Directive" (γραμμή κώδικα 8 ) χρησιμοποιείται για να συμπεριλάβει ένα αρχείο στο άλλο αρχείο
- Αυτό το περιλαμβανόμενο αρχείο μπορεί να είναι HTML, JSP, αρχεία κειμένου κ.λπ.
- Είναι επίσης χρήσιμο στη δημιουργία προτύπων με τις προβολές των χρηστών και στη διάσπαση των σελίδων σε ενέργειες κεφαλίδας και υποσέλιδου και πλαϊνής γραμμής.
- Περιλαμβάνει αρχείο κατά τη φάση της μετάφρασης
Σύνταξη της οδηγίας περιλαμβάνει:
<%@ include….%>
Παράδειγμα:
Directive_jsp2.jsp (Κύριο αρχείο)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ include file="directive_header_jsp3.jsp" %> <!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 Directive JSP2</title> </head> <body> <a>This is the main file</a> </body> </html>
Directive_header_jsp3.jsp (το οποίο περιλαμβάνεται στο κύριο αρχείο)
<%@ 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"> </head> <body> <a>Header file : </a> <%int count =1; count++; out.println(count);%> : </body> </html>
Επεξήγηση του κώδικα:
Directive_jsp2.jsp:
Κωδικός Γραμμή 3: Σε αυτόν τον κώδικα, χρησιμοποιούμε ετικέτες συμπερίληψης όπου συμπεριλαμβάνουμε το αρχείο directive_header_jsp3.jsp στο κύριο αρχείο(_jsp2.jsp) και λαμβάνει την έξοδο τόσο του κύριου αρχείου όσο και του συμπεριλαμβανόμενου αρχείου.
Directive_header_jsp3.jsp:
Κωδικός Γραμμή 11-12: Πήραμε ένα πλήθος μεταβλητών αρχικοποιημένο σε 1 και στη συνέχεια το αυξήσαμε. Αυτό θα δώσει την έξοδο στο κύριο αρχείο όπως φαίνεται παρακάτω.
Όταν εκτελείτε τον παραπάνω κώδικα, λαμβάνετε την ακόλουθη έξοδο:
Παραγωγή:
- Η έξοδος είναι αρχείο κεφαλίδας: 2 : Αυτό είναι το κύριο αρχείο
- Η έξοδος εκτελείται από το αρχείο directive_jsp2.jsp ενώ το αρχείο directive_header_jsp3.jsp θα μεταγλωττιστεί πρώτο.
- Αφού ολοκληρωθεί το συμπεριλαμβανόμενο αρχείο, εκτελείται το κύριο αρχείο και η έξοδος θα είναι από το κύριο αρχείο "This is the main file". Έτσι θα λάβετε την έξοδο ως "Αρχείο κεφαλίδας: 2" από _jsp3.jsp και "Αυτό είναι κύριο αρχείο" από _jsp2.jsp.
3) Οδηγία JSP Taglib
- Η οδηγία JSP taglib χρησιμοποιείται για να ορίσει τη βιβλιοθήκη ετικετών με το "taglib" ως πρόθεμα, το οποίο μπορούμε να χρησιμοποιήσουμε σε JSP.
- Περισσότερες λεπτομέρειες θα καλυφθούν στην ενότητα προσαρμοσμένες ετικέτες JSP
- Η οδηγία JSP taglib χρησιμοποιείται στις σελίδες JSP χρησιμοποιώντας τις τυπικές βιβλιοθήκες ετικετών JSP
- Χρησιμοποιεί ένα σύνολο προσαρμοσμένων ετικετών, προσδιορίζει τη θέση της βιβλιοθήκης και παρέχει μέσα αναγνώρισης προσαρμοσμένων ετικετών στη σελίδα JSP.
Σύνταξη της οδηγίας taglib:
<%@ taglib uri="uri" prefix="value"%>
Εδώ το χαρακτηριστικό "uri" είναι ένα μοναδικό αναγνωριστικό στον περιγραφέα της βιβλιοθήκης ετικετών και το χαρακτηριστικό "πρόθεμα" είναι ένα όνομα ετικέτας.
Παράδειγμα:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="gurutag" uri="http://java.sun.com/jsp/jstl/core" %> <!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 Directive JSP</title> <gurutag:hello/> </head> <body> </body> </html>
Επεξήγηση του κώδικα:
Κωδικός Γραμμή 3: Εδώ το "taglib" ορίζεται με τα χαρακτηριστικά uri και πρόθεμα.
Κωδικός Γραμμή 9: Το "gurutag" είναι η προσαρμοσμένη ετικέτα που ορίζεται και μπορεί να χρησιμοποιηθεί οπουδήποτε