Κύκλος Ζωής JSP

jsp κύκλος ζωής

Τι είναι το JSP LifeCycle;

Ο κύκλος ζωής του JSP ορίζεται ως η μετάφραση της Σελίδας JSP σε servlet καθώς μια Σελίδα JSP πρέπει να μετατραπεί πρώτα σε servlet για να επεξεργαστεί τα αιτήματα υπηρεσίας. Ο Κύκλος Ζωής ξεκινά με τη δημιουργία του JSP και τελειώνει με την αποσύνθεση αυτού.

Διαφορετικές φάσεις του κύκλου ζωής JSP

Όταν το πρόγραμμα περιήγησης ζητά ένα JSP, η μηχανή JSP ελέγχει πρώτα αν χρειάζεται να μεταγλωττίσει τη σελίδα. Εάν το JSP έχει μεταγλωττιστεί τελευταία ή η πρόσφατη τροποποίηση έχει γίνει σε JSP, τότε η μηχανή JSP μεταγλωττίζει τη σελίδα.

Η διαδικασία μεταγλώττισης της σελίδας JSP περιλαμβάνει τρία βήματα:

  • Ανάλυση JSP
  • Μετατροπή JSP σε servlet
  • Μεταγλώττιση του servlet

Διάγραμμα Κύκλου Ζωής JSP

Ο κύκλος ζωής JSP απεικονίζεται στο παρακάτω διάγραμμα.

Κύκλος Ζωής JSP

Τα ακόλουθα βήματα εξηγούν τον κύκλο ζωής του JSP:

  1. Μετάφραση της σελίδας JSP
  2. Σύνταξη σελίδας JSP (Σύνταξη σελίδας JSP σε _jsp.java)
  3. Φόρτωση τάξης (το _jsp.java μετατρέπεται σε αρχείο κλάσης _jsp.class)
  4. Instantiation (Δημιουργείται αντικείμενο του δημιουργημένου servlet)
  5. αρχικοποίηση(_jspinit() η μέθοδος επικαλείται από κοντέινερ)
  6. Επεξεργασία αιτήματος (_jspservice() η μέθοδος καλείται από το κοντέινερ)
  7. καταστρέφω (_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>

Επεξήγηση κώδικα για Demo.jsp

Κωδικός Γραμμή 1: html ετικέτα έναρξης

Κωδικός Γραμμή 2: Ετικέτα κεφαλιού

Κωδικός Γραμμή 3 – 4: Ετικέτα τίτλου, δηλαδή Επίδειξη JSP και ετικέτα κεφαλής κλεισίματος

Κωδικός Γραμμή 5 – 6: Ετικέτα σεναρίου όπου αρχικοποιείται η επίδειξη της μεταβλητής

Κωδικός Γραμμή 7 – 8: Στην ετικέτα σώματος, ένα κείμενο που θα εκτυπωθεί στην έξοδο (Το πλήθος είναι: )

Κωδικός Γραμμή 9: Ετικέτα σεναρίου όπου προσπαθείτε να εκτυπώσετε τη μεταβλητή demovar με αυξημένη τιμή

Κωδικός Γραμμή 10 – 11: Οι ετικέτες σώματος και HTML έκλεισαν

Η σελίδα επίδειξης JSP μετατρέπεται σε demo_jsp servlet στον παρακάτω κώδικα.

Κύκλος Ζωής JSP

Επεξήγηση κώδικα για Demo_jsp.java

Κωδικός Γραμμή 1: Η κλάση Servlet demo_jsp επεκτείνει τη γονική κλάση HttpServlet

Κωδικός Γραμμή 2 – 3: Παράκαμψη της μεθόδου εξυπηρέτησης του jsp, δηλαδή _jspservice που έχει ως παραμέτρους τα αντικείμενα HttpServletRequest και HttpServletResponse

Κωδικός Γραμμή 4: Μέθοδος ανοίγματος

Κωδικός Γραμμή 5: Κλήση της μεθόδου getWriter() του αντικειμένου απάντησης για λήψη PrintWriterobject (εκτυπώνει μορφοποιημένη αναπαράσταση αντικειμένων σε ροή εξόδου κειμένου)

Κωδικός Γραμμή 6: Κλήση αντικειμένου απόκρισης μεθόδου setContentType για να ορίσετε τον τύπο περιεχομένου

Κωδικός Γραμμή 7: Χρησιμοποιώντας write() μέθοδος του αντικειμένου PrintWriter που προσπαθεί να αναλύσει το html

Κωδικός Γραμμή 8: Εκκίνηση της μεταβλητής demovar σε 0

Κωδικός Γραμμή 9: Καλώντας write() μέθοδος του αντικειμένου PrintWriter για την ανάλυση του κειμένου

Κωδικός Γραμμή 10: Καλώντας print() μέθοδος του αντικειμένου PrintWriter για αύξηση της μεταβλητής demovar από 0+1=1. Επομένως, η έξοδος θα είναι 1

Κωδικός Γραμμή 11: Χρησιμοποιώντας write() μέθοδος του αντικειμένου PrintWriter που προσπαθεί να αναλύσει το html

Παραγωγή:

Κύκλος Ζωής JSP

  • Εδώ μπορείτε να δείτε ότι στο στιγμιότυπο οθόνης το 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() μέθοδος όταν εκτελούμε οποιαδήποτε εκκαθάριση, όπως αποδέσμευση συνδέσεων βάσης δεδομένων ή κλείσιμο ανοιχτών αρχείων.