Δράσεις JSP που χρησιμοποιούν κατασκευές σε σύνταξη XML για τον έλεγχο της συμπεριφοράς του servlet engine. Θα μάθουμε λεπτομερέστερα σχετικά με διάφορα στοιχεία δράσης JSP, όπως αίτημα πελάτη, απόκριση διακομιστή, κωδικούς κατάστασης HTTP.
Σε αυτό το σεμινάριο, θα μάθετε-
- Αίτημα πελάτη JSP
- Απόκριση διακομιστή JSP
- Κωδικοί κατάστασης HTTP JSP
Αίτημα πελάτη JSP
- Όταν ζητείται η ιστοσελίδα, στέλνει πληροφορίες στον διακομιστή ιστού στην κεφαλίδα HTTP.
- Μπορούμε να χρησιμοποιήσουμε αυτές τις πληροφορίες χρησιμοποιώντας το αντικείμενο HTTPServletRequest.
- Οι πληροφορίες που αποστέλλονται από το πρόγραμμα περιήγησης αποθηκεύονται στην κεφαλίδα αιτήματος του αιτήματος HTTP.
- Χρησιμοποιούμε διαφορετικές κεφαλίδες για να στείλουμε πληροφορίες στο αντικείμενο αιτήματος.
Παρακάτω περιγράφονται διαφορετικές κεφαλίδες:
Επί κεφαλής | Περιγραφή | Παράδειγμα |
Αποδέχομαι | Καθορίζει τύπους MIME που μπορούν να χειριστούν το πρόγραμμα περιήγησης ή άλλοι πελάτες | Εικόνα / png ή εικόνα / jpeg.webp |
Αποδοχή-charset | Χρησιμοποιεί το σύνολο χαρακτήρων που χρησιμοποιεί το πρόγραμμα περιήγησης για να εμφανίσει τις πληροφορίες | ISO-8859-1 |
Αποδοχή- Κωδικοποίηση | Καθορίζει τον τύπο κωδικοποίησης που χειρίζεται το πρόγραμμα περιήγησης | Gzip ή συμπίεση |
Αποδοχή-γλώσσας | Καθορίζει συγκεκριμένη γλώσσα για τους πελάτες | Εν, en_us |
Εξουσιοδότηση | Κεφαλίδα που χρησιμοποιείται από τους πελάτες κατά την προσπάθεια πρόσβασης σε ιστοσελίδες που προστατεύονται με κωδικό πρόσβασης | |
Σύνδεση | Υποδεικνύει εάν ο πελάτης μπορεί να χειριστεί επίμονες συνδέσεις HTTP (το πρόγραμμα περιήγησης μπορεί να ανακτήσει πολλά αρχεία) | Κρατήσει ζωντανή |
Μήκος περιεχομένου | Ισχύει για τη δημοσίευση αιτημάτων. Δίνει το μέγεθος των δεδομένων μετά από byte | |
Κουλουράκι | Επιστρέφει το cookie στον διακομιστή (αυτά που είχαν προηγουμένως σταλεί στο πρόγραμμα περιήγησης) | |
Πλήθος | Καθορίζει τον κεντρικό υπολογιστή και τη θύρα του αρχικού URL | |
Εάν τροποποιηθεί από τότε | Υποδεικνύει ότι απαιτεί μόνο μια σελίδα εάν έχει αλλάξει ή τροποποιηθεί | |
Εάν δεν έχει τροποποιηθεί από τότε | Υποδεικνύει ότι απαιτεί μια σελίδα μόνο εάν δεν έχει αλλάξει ή τροποποιηθεί | |
Αναφέρων | Υποδεικνύει τη διεύθυνση URL της σελίδας διευθύνσεων URL | |
Χρήστης-πράκτορας | Προσδιορίζει το πρόγραμμα περιήγησης ή το αίτημα του πελάτη | |
Οι ακόλουθες μέθοδοι χρησιμοποιούνται για την ανάγνωση της κεφαλίδας HTTP στη σελίδα JSP:
- Cookie [] getCookies () - επιστρέφει έναν πίνακα που περιέχει αντικείμενα cookie που έχει στείλει ο πελάτης
- Enumeration getAttributeNames () - περιέχει απαρίθμηση ονομάτων χαρακτηριστικών για αίτηση
- Enumeration getHeaderNames () - περιέχει απαρίθμηση ονομάτων κεφαλίδας.
- Enumeration getParameterNames () - περιέχει απαρίθμηση λήψης ονομάτων παραμέτρων στο αίτημα.
- HttpSessiongetSession () - επιστρέφει την τρέχουσα περίοδο σύνδεσης που σχετίζεται με το αίτημα ή εάν δεν έχει περίοδο λειτουργίας, τότε θα δημιουργήσει μια νέα.
- Locale getLocale () - επιστρέφει τις προτιμώμενες τοπικές ρυθμίσεις στις οποίες ο πελάτης θα δέχεται περιεχόμενο. Έχει ανατεθεί στην απόκριση. Από προεπιλογή, η τιμή θα είναι προεπιλεγμένη τοποθεσία του διακομιστή.
- Object getAttribute (Όνομα συμβολοσειράς) - επιστρέφει την τιμή του χαρακτηρισμένου χαρακτηριστικού ως αντικείμενο.
- ServletInputStreamgetInputStream () - ανακτά το σώμα του αιτήματος ως δυαδικά δεδομένα.
- String getAuthType () - επιστρέφει το όνομα του σχήματος ελέγχου ταυτότητας για την προστασία του servlet
- String getCharacterEncoding () - επιστρέφει το όνομα της κωδικοποίησης χαρακτήρων που χρησιμοποιείται στο σώμα της αίτησης.
- String getContentType () - επιστρέφει τον τύπο MIME του σώματος του αιτήματος.
- String getContextPath () - επιστρέφει το τμήμα του αιτήματος Το URI υποδεικνύει τη διαδρομή περιβάλλοντος του URI
- String getHeader (Όνομα συμβολοσειράς) - επιστρέφει την κεφαλίδα αιτήματος ως συμβολοσειρά
- String getMethod () - επιστρέφει το όνομα της μεθόδου HTTP όπως GET, POST
- String getParameter (Όνομα συμβολοσειράς) - επιστρέφει την παράμετρο του αιτήματος ως συμβολοσειρά.
- String getPathInfo () - επιστρέφει τις πληροφορίες διαδρομής που σχετίζονται με τη διεύθυνση URL
- String getQueryString () - επιστρέφει τη συμβολοσειρά ερωτήματος που σχετίζεται με τη διεύθυνση URL του αιτήματος
- String getServletPath () - επιστρέφει το τμήμα των διευθύνσεων URL του αιτήματος που καλεί το JSP
- String [] getParameterValues (όνομα συμβολοσειράς) - επιστρέφει τον πίνακα αντικειμένων συμβολοσειρών που περιέχει τις τιμές που έχει η παράμετρος αιτήματος
Παράδειγμα:
Στο παρακάτω παράδειγμα, χρησιμοποιούμε διαφορετικές μεθόδους χρησιμοποιώντας αντικείμενο αιτήματος
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. * java.util. *"%><κεφάλι>> Αίτημα πελάτη Guru JSP <άτομο>
Αίτημα πελάτη Guru JSP
κεφαλίδα γκουρού | κεφαλίδα γκουρού Τιμές |
<%HttpSession gurusession = request.getSession ();out.print ("
Το όνομα περιόδου σύνδεσης είναι | " + gurusession + " td.>
|
");Locale gurulocale = request.getLocale ();out.print ("
Το τοπικό όνομα είναι | " + gurulocale + " |
");String path = request.getPathInfo ();out.print ("
Το όνομα διαδρομής είναι | " + διαδρομή + " |
");Συμβολοσειρά lpath = request.get ();out.print ("
Η διαδρομή περιβάλλοντος είναι | " + lipath + " |
");String servername = request.getServerName ();out.print ("
Το όνομα διακομιστή είναι | " + servername + " |
");int portname = request.getServerPort ();out.print ("
Η θύρα διακομιστή είναι | " + portname + " |
");Καταμέτρηση hnames = request.getHeaderNames ();ενώ (hnames.hasMoreElements ()) {String paramName = (String) hnames.nextElement ();out.print ("
" + paramName + " | ");String paramValue = request.getHeader (paramName);out.println ("" + paramValue + " |
");}%>
Επεξήγηση του κωδικού:
Γραμμή κώδικα 17: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε το αντικείμενο περιόδου λειτουργίας της συγκεκριμένης περιόδου σύνδεσης και λαμβάνουμε την τιμή αντικειμένου αυτής της περιόδου σύνδεσης
Γραμμή κώδικα 19: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε τοπικές ρυθμίσεις για τη συγκεκριμένη τοπική περίοδο σύνδεσης i.een_US για αυτό το JSP.
Γραμμή κώδικα 21: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε πληροφορίες διαδρομής για αυτό το JSP. Σε αυτήν την περίπτωση, είναι μηδενική καθώς δεν αναφέρεται διαδρομή για τη διεύθυνση URL.
Γραμμή κώδικα 23: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε διαδρομή περιβάλλοντος, δηλαδή διαδρομή ρίζας
Γραμμή κώδικα 25: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε το όνομα του διακομιστή.
Γραμμή κώδικα 27: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε θύρα διακομιστή
Γραμμή κώδικα 29-35: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε ονόματα κεφαλίδας που βγαίνουν ως απαρίθμηση, και ως εκ τούτου λαμβάνουμε όλες τις τιμές κεφαλίδας στα ονόματα κεφαλίδας.
Σε αυτό, λαμβάνουμε όλες τις τιμές κεφαλίδας ως cookie, κεντρικός υπολογιστής, σύνδεση, αποδοχή γλώσσας, αποδοχή κωδικοποίησης.
Όταν εκτελείτε τον παραπάνω κώδικα, λαμβάνετε την ακόλουθη έξοδο:
Έξοδος :
Λαμβάνουμε τη σειρά τιμών όπως το όνομα περιόδου σύνδεσης, το όνομα τοπικής ρύθμισης, το όνομα διαδρομής, το όνομα διακομιστή, το όνομα θύρας, τον κεντρικό υπολογιστή, τη διαδρομή περιβάλλοντος και όλες τις τιμές κεφαλίδας αυτού του JSP.
Απόκριση διακομιστή JSP
- Όταν μια αίτηση υποβάλλεται σε επεξεργασία και στη συνέχεια δημιουργείται η απάντηση από τον διακομιστή ιστού. Αποτελείται από μια γραμμή κατάστασης, κεφαλίδες απόκρισης, μια κενή γραμμή και ένα έγγραφο.
- Είναι το αντικείμενο του HTTPServletResponseclass, το οποίο είναι ένα αντικείμενο απόκρισης.
- Η γραμμή κατάστασης είναι μια έκδοση του HTML.
Οι κεφαλίδες απόκρισης αναφέρονται παρακάτω:
Επί κεφαλής | Περιγραφή |
Επιτρέπω | Καθορίζει τις μεθόδους αιτήματος όπως GET, POST που ζητά ο διακομιστής |
Έλεγχος προσωρινής μνήμης | Το έγγραφο απόκρισης μπορεί να αποθηκευτεί στην κρυφή μνήμη. Μπορεί να είναι δημόσιο, ιδιωτικό και χωρίς προσωρινή μνήμη. Κανένα cache δεν καθορίζει ότι το έγγραφο δεν πρέπει να αποθηκεύεται στην κρυφή μνήμη |
Σύνδεση | Διδάσκει εάν το πρόγραμμα περιήγησης θα πρέπει να χρησιμοποιεί αποθηκευμένες συνδέσειςHTTP ή όχι. Η τιμή κλεισίματος δηλώνει ότι το πρόγραμμα περιήγησης δεν πρέπει να χρησιμοποιεί μόνιμη σύνδεση HTTPConnections και το "keep-live" σημαίνει χρήση μόνιμων συνδέσεων |
Περιεχόμενο-διάθεση | Για να ρωτήσετε τον χρήστη εάν θα αποθηκεύσει την απόκριση στο δίσκο ή όχι |
Κωδικοποίηση περιεχομένου | Η σελίδα πρέπει να κωδικοποιηθεί κατά τη μετάδοση |
Μήκος περιεχομένου | Αριθμός byte στην απόκριση |
Τύπος περιεχομένου | Καθορίζει τον τύπο απόκρισης MIME |
Λήγει | Καθορίζει έως πότε το περιεχόμενο θα πρέπει να θεωρηθεί ξεπερασμένο και δεν πρέπει να αποθηκεύεται προσωρινά |
Τελευταία τροποποίηση | Υποδεικνύει πότε τροποποιήθηκε τελευταία το έγγραφο |
Τοποθεσία | Θα πρέπει να συμπεριλαμβάνεται σε όλες τις απαντήσεις που έχουν κωδικό κατάστασης 300 ως κωδικό κατάστασης |
Φρεσκάρω | Καθορίζει τον τρόπο εύρεσης της ενημερωμένης σελίδας. |
Επανάληψη | Μπορεί να χρησιμοποιηθεί με απόκριση 503 για να πει στον πελάτη πόσο σύντομα μπορεί να επαναλάβει το αίτημα |
Σετ-cookie | Καθορίζει το cookie που σχετίζεται με τη σελίδα |
Ακολουθούν οι μέθοδοι που χρησιμοποιούν αντικείμενο απόκρισης:
- String encodeRedirectURL (String URL) - κωδικοποιεί τη διεύθυνση URL στη μέθοδο redirectURL.
- String encodeURL (String URL) - κωδικοποιεί τη διεύθυνση URL συμπεριλαμβάνοντας το αναγνωριστικό περιόδου σύνδεσης.
- Boolean περιέχειHeader (Όνομα συμβολοσειράς) - περιέχει μια κεφαλίδα στο JSP ή όχι.
- Boolean isCommited () - η απόκριση έχει δεσμευτεί ή όχι.
- Void addCookie (Cookie cookie) - προσθέτει cookie στην απόκριση
- Void addDateHeader (Όνομα συμβολοσειράς, τιμή συμβολοσειράς) - προσθέτει το όνομα και την τιμή της κεφαλίδας απόκρισης
- Void addHeader (Όνομα συμβολοσειράς, τιμή συμβολοσειράς) - προσθέτει κεφαλίδα απόκρισης με όνομα και τιμή
- Void addIntHeader (Όνομα συμβολοσειράς, τιμή int) - προσθέτει κεφαλίδα απόκρισης με όνομα και ακέραια τιμή
- Void flushBuffer () - επιβάλλει περιεχόμενο στο buffer στην έξοδο στον πελάτη.
- Void reset () - διαγράφει δεδομένα στο buffer.
- Void resetBuffer - διαγράφει το buffer περιεχομένου στην απόκριση χωρίς διαγραφή κωδικών κατάστασης.
- Void sendError (intsc, Stringmsg) - στέλνει μια απάντηση σφάλματος στον πελάτη χρησιμοποιώντας κωδικό κατάστασης.
- Void sendRedirect (String location) - στέλνει μια προσωρινή απάντηση ανακατεύθυνσης στον πελάτη.
- Void setBufferSize (int μέγεθος) - ορίζει το μέγεθος του buffer του σώματος
- Void setCharacterEncoding (String charset) - ορίζει την κωδικοποίηση χαρακτήρων
- Void setContentType (Τύπος συμβολοσειράς) - ορίζει τον τύπο περιεχομένου της απόκρισης
- Void setContentLength (intlen) - ορίζει το μήκος περιεχομένου της απόκρισης
- Void setLocale (Locale lcl) - ορίζει τον τοπικό τύπο της απόκρισης
- Void setStatus (intsc) - ορίζει τον κωδικό κατάστασης της απόκρισης
Παράδειγμα:
Σε αυτό το παράδειγμα, καλύπτουμε διάφορες μεθόδους getLocale, flushbuffer, getWriter, get ContentType, setIntHeader.
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. * java.util. *"%><κεφάλι>> Απόκριση δράσης του γκουρού <άτομο><κέντρο>
Απόκριση του γκουρού
<%Locale lcl = respons.getLocale ();out.println ("Το τοπικό είναι: + lcl + "\ n");απόκριση.flushBuffer ();PrintWriter output = response.getWriter ();output.println ("Αυτό είναι από αντικείμενο συγγραφέα");Τύπος συμβολοσειράς = response.getContentType ();out.println ("Ο τύπος περιεχομένου: + type + "\ n");// Ορισμός ανανέωσης, χρόνος αυτόματης φόρτωσης ως 5 δευτερόλεπταresponse.setIntHeader ("Ανανέωση", 5);// Λάβετε τρέχουσα ώραΗμερομηνία dt = νέα Ημερομηνία ();out.println ("Η σημερινή ημερομηνία είναι: + dt.toString () + "\ n");%>