Κύκλος Ζωής JSP

Τι είναι το JSP LifeCycle;
Ο κύκλος ζωής του JSP ορίζεται ως η μετάφραση της Σελίδας JSP σε servlet καθώς μια Σελίδα JSP πρέπει να μετατραπεί πρώτα σε servlet για να επεξεργαστεί τα αιτήματα υπηρεσίας. Ο Κύκλος Ζωής ξεκινά με τη δημιουργία του JSP και τελειώνει με την αποσύνθεση αυτού.
Διαφορετικές φάσεις του κύκλου ζωής JSP
Όταν το πρόγραμμα περιήγησης ζητά ένα JSP, η μηχανή JSP ελέγχει πρώτα αν χρειάζεται να μεταγλωττίσει τη σελίδα. Εάν το JSP έχει μεταγλωττιστεί τελευταία ή η πρόσφατη τροποποίηση έχει γίνει σε JSP, τότε η μηχανή JSP μεταγλωττίζει τη σελίδα.
Η διαδικασία μεταγλώττισης της σελίδας JSP περιλαμβάνει τρία βήματα:
- Ανάλυση JSP
- Μετατροπή JSP σε servlet
- Μεταγλώττιση του servlet
Διάγραμμα Κύκλου Ζωής JSP
Ο κύκλος ζωής JSP απεικονίζεται στο παρακάτω διάγραμμα.
Τα ακόλουθα βήματα εξηγούν τον κύκλο ζωής του JSP:
- Μετάφραση της σελίδας JSP
- Σύνταξη σελίδας JSP (Σύνταξη σελίδας JSP σε _jsp.java)
- Φόρτωση τάξης (το _jsp.java μετατρέπεται σε αρχείο κλάσης _jsp.class)
- Instantiation (Δημιουργείται αντικείμενο του δημιουργημένου servlet)
- αρχικοποίηση(
_jspinit()η μέθοδος επικαλείται από κοντέινερ) - Επεξεργασία αιτήματος (
_jspservice()η μέθοδος καλείται από το κοντέινερ) - καταστρέφω (
_jspDestroy()μέθοδος που επικαλείται το κοντέινερ)
Ας κάνουμε πιο αναλυτική περίληψη για τα παραπάνω σημεία:
1) Μετάφραση της σελίδας JSP:
A Java Το αρχείο servlet δημιουργείται από ένα αρχείο προέλευσης JSP. Αυτό είναι το πρώτο βήμα του κύκλου ζωής του JSP. Στη φάση της μετάφρασης, το κοντέινερ επικυρώνει τη συντακτική ορθότητα των αρχείων σελίδων και ετικετών JSP.
- Το κοντέινερ JSP ερμηνεύει τις τυπικές οδηγίες και ενέργειες και τις προσαρμοσμένες ενέργειες που αναφέρονται σε βιβλιοθήκες ετικετών (είναι όλες μέρος της σελίδας JSP και θα συζητηθούν στην επόμενη ενότητα) που χρησιμοποιούνται σε αυτήν τη σελίδα JSP.
- Στην παραπάνω εικονογραφική περιγραφή, το demo.jsp μεταφράζεται σε demo_jsp.java στο πρώτο βήμα
- Ας πάρουμε ένα παράδειγμα του "demo.jsp" όπως φαίνεται παρακάτω:
Demo.jsp
<html> <head> <title>Demo JSP</title> </head> <% int demvar=0;%> <body> Count is: <% Out.println(demovar++); %> <body> </html>
Code Επεξήγηση για το Demo.jsp
Code Γραμμή 1: html ετικέτα έναρξης
Code Γραμμή 2: Ετικέτα κεφαλιού
Code Γραμμή 3 – 4: Ετικέτα τίτλου, δηλαδή Επίδειξη JSP και ετικέτα κεφαλής κλεισίματος
Code Γραμμή 5 – 6: Ετικέτα σεναρίου όπου αρχικοποιείται η επίδειξη της μεταβλητής
Code Γραμμή 7 – 8: Στην ετικέτα σώματος, ένα κείμενο που θα εκτυπωθεί στην έξοδο (Το πλήθος είναι: )
Code Γραμμή 9: Ετικέτα σεναρίου όπου προσπαθείτε να εκτυπώσετε τη μεταβλητή demovar με αυξημένη τιμή
Code Γραμμή 10 – 11: Οι ετικέτες σώματος και HTML έκλεισαν
Η σελίδα επίδειξης JSP μετατρέπεται σε demo_jsp servlet στον παρακάτω κώδικα.
Code επεξήγηση για το Demo_jsp.java
Code Γραμμή 1: Η κλάση Servlet demo_jsp επεκτείνει τη γονική κλάση HttpServlet
Code Γραμμή 2 – 3: Παράκαμψη της μεθόδου εξυπηρέτησης του jsp, δηλαδή _jspservice που έχει ως παραμέτρους τα αντικείμενα HttpServletRequest και HttpServletResponse
Code Γραμμή 4: Μέθοδος ανοίγματος
Code Γραμμή 5: Κλήση της μεθόδου getWriter() του αντικειμένου απόκρισης για λήψη ΕκτύπωσηςWriterαντικείμενο (εκτυπώνει μορφοποιημένη αναπαράσταση αντικειμένων σε ροή εξόδου κειμένου)
Code Γραμμή 6: Κλήση αντικειμένου απόκρισης μεθόδου setContentType για να ορίσετε τον τύπο περιεχομένου
Code Γραμμή 7: Χρησιμοποιώντας write() μέθοδος εκτύπωσηςWriter αντικείμενο που προσπαθεί να αναλύσει html
Code Γραμμή 8: Εκκίνηση της μεταβλητής demovar σε 0
Code Γραμμή 9: Καλώντας write() μέθοδος εκτύπωσηςWriter αντικείμενο για την ανάλυση του κειμένου
Code Γραμμή 10: Καλώντας print() μέθοδος εκτύπωσηςWriter αντικείμενο για αύξηση της μεταβλητής demovar από 0+1=1. Επομένως, η έξοδος θα είναι 1
Code Γραμμή 11: Χρησιμοποιώντας write() μέθοδος εκτύπωσηςWriter αντικείμενο που προσπαθεί να αναλύσει html
Παραγωγή:
- Εδώ μπορείτε να δείτε ότι στο στιγμιότυπο οθόνης το Output είναι 1 επειδή το demvar αρχικοποιείται σε 0 και στη συνέχεια αυξάνεται σε 0+1=1
Στο παραπάνω παράδειγμα,
- Το demo.jsp, είναι ένα JSP όπου μια μεταβλητή αρχικοποιείται και αυξάνεται. Αυτό το JSP μετατρέπεται στο servlet (demo_jsp.class ) όπου ο κινητήρας JSP φορτώνει τη Σελίδα JSP και μετατρέπει σε περιεχόμενο servlet.
- Όταν γίνει η μετατροπή, όλο το κείμενο του προτύπου μετατρέπεται σε
println()δηλώσεις και όλα στοιχεία JSP μετατρέπονται σε Java κώδικας.
Έτσι μεταφράζεται μια απλή σελίδα JSP σε κλάση servlet.
2) Σύνταξη της Σελίδας JSP
- Το αρχείο java servlet που δημιουργείται μεταγλωττίζεται στην κλάση java servlet
- Η μετάφραση της σελίδας πηγής java στην κλάση υλοποίησης μπορεί να συμβεί ανά πάσα στιγμή μεταξύ της ανάπτυξης της σελίδας JSP στο κοντέινερ και της επεξεργασίας της σελίδας JSP.
- Στην παραπάνω εικονογραφική περιγραφή, το demo_jsp.java έχει μεταγλωττιστεί σε ένα αρχείο κλάσης demo_jsp.class
3) Φόρτωση τάξης
- Η κλάση Servlet που έχει φορτωθεί από την πηγή JSP φορτώνεται τώρα στο κοντέινερ
4) Instantiation
- Σε αυτό το βήμα δημιουργείται το αντικείμενο, δηλαδή η παρουσία της κλάσης.
- Το κοντέινερ διαχειρίζεται μία ή περισσότερες παρουσίες αυτής της κλάσης στην απόκριση σε αιτήματα και άλλα συμβάντα. Συνήθως, ένα κοντέινερ JSP δημιουργείται χρησιμοποιώντας ένα κοντέινερ servlet. Ένα κοντέινερ JSP είναι μια επέκταση του κοντέινερ servlet καθώς και το κοντέινερ υποστηρίζει JSP και servlet.
- Μια διεπαφή JSPPage που παρέχεται από το κοντέινερ παρέχει
init()καιdestroy()μεθόδους. - Υπάρχει μια διεπαφή HttpJSPPage που εξυπηρετεί αιτήματα HTTP και περιέχει επίσης τη μέθοδο εξυπηρέτησης.
5) Αρχικοποίηση
public void jspInit()
{
//initializing the code
}
_jspinit()Η μέθοδος θα ξεκινήσει την παρουσία του servlet που δημιουργήθηκε από το JSP και θα κληθεί από το κοντέινερ σε αυτή τη φάση.- Μόλις δημιουργηθεί το στιγμιότυπο, η μέθοδος init θα κληθεί αμέσως μετά από αυτό
- Καλείται μόνο μία φορά κατά τη διάρκεια ενός κύκλου ζωής JSP, η μέθοδος για αρχικοποίηση δηλώνεται όπως φαίνεται παραπάνω
6) Επεξεργασία αιτήματος
void _jspservice(HttpServletRequest request HttpServletResponse response)
{
//handling all request and responses
}
_jspservice()Η μέθοδος καλείται από το κοντέινερ για όλα τα αιτήματα που εγείρονται από τη σελίδα JSP κατά τη διάρκεια του κύκλου ζωής της- Για αυτή τη φάση, πρέπει να περάσει από όλες τις παραπάνω φάσεις και τότε μπορεί να γίνει επίκληση μόνο της μεθόδου σέρβις.
- Περνάει αντικείμενα αιτήματος και απόκρισης
- Αυτή η μέθοδος δεν μπορεί να παρακαμφθεί
- Η μέθοδος φαίνεται παραπάνω: Είναι υπεύθυνη για τη δημιουργία όλων των μεθόδων HTTP π.χ. GET, POST, κ.λπ.
7) Καταστρέψτε
public void _jspdestroy()
{
//all clean up code
}
_jspdestroy()μέθοδος επικαλείται επίσης το δοχείο- Αυτή η μέθοδος καλείται όταν το κοντέινερ αποφασίσει ότι δεν χρειάζεται πλέον την παρουσία του servlet για τις αιτήσεις εξυπηρέτησης.
- Όταν γίνει η κλήση για καταστροφή της μεθόδου τότε, το servlet είναι έτοιμο για συλλογή σκουπιδιών
- Αυτό είναι το τέλος του κύκλου ζωής.
- Μπορούμε να παρακάμψουμε
jspdestroy()μέθοδος όταν εκτελούμε οποιαδήποτε εκκαθάριση, όπως αποδέσμευση συνδέσεων βάσης δεδομένων ή κλείσιμο ανοιχτών αρχείων.



