Αίτημα πελάτη JSP, Απόκριση διακομιστή & Κωδικοί κατάστασης HTTP

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

Anonim

Δράσεις 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:

  1. Cookie [] getCookies () - επιστρέφει έναν πίνακα που περιέχει αντικείμενα cookie που έχει στείλει ο πελάτης
  2. Enumeration getAttributeNames () - περιέχει απαρίθμηση ονομάτων χαρακτηριστικών για αίτηση
  3. Enumeration getHeaderNames () - περιέχει απαρίθμηση ονομάτων κεφαλίδας.
  4. Enumeration getParameterNames () - περιέχει απαρίθμηση λήψης ονομάτων παραμέτρων στο αίτημα.
  5. HttpSessiongetSession () - επιστρέφει την τρέχουσα περίοδο σύνδεσης που σχετίζεται με το αίτημα ή εάν δεν έχει περίοδο λειτουργίας, τότε θα δημιουργήσει μια νέα.
  6. Locale getLocale () - επιστρέφει τις προτιμώμενες τοπικές ρυθμίσεις στις οποίες ο πελάτης θα δέχεται περιεχόμενο. Έχει ανατεθεί στην απόκριση. Από προεπιλογή, η τιμή θα είναι προεπιλεγμένη τοποθεσία του διακομιστή.
  7. Object getAttribute (Όνομα συμβολοσειράς) - επιστρέφει την τιμή του χαρακτηρισμένου χαρακτηριστικού ως αντικείμενο.
  8. ServletInputStreamgetInputStream () - ανακτά το σώμα του αιτήματος ως δυαδικά δεδομένα.
  9. String getAuthType () - επιστρέφει το όνομα του σχήματος ελέγχου ταυτότητας για την προστασία του servlet
  10. String getCharacterEncoding () - επιστρέφει το όνομα της κωδικοποίησης χαρακτήρων που χρησιμοποιείται στο σώμα της αίτησης.
  11. String getContentType () - επιστρέφει τον τύπο MIME του σώματος του αιτήματος.
  12. String getContextPath () - επιστρέφει το τμήμα του αιτήματος Το URI υποδεικνύει τη διαδρομή περιβάλλοντος του URI
  13. String getHeader (Όνομα συμβολοσειράς) - επιστρέφει την κεφαλίδα αιτήματος ως συμβολοσειρά
  14. String getMethod () - επιστρέφει το όνομα της μεθόδου HTTP όπως GET, POST
  15. String getParameter (Όνομα συμβολοσειράς) - επιστρέφει την παράμετρο του αιτήματος ως συμβολοσειρά.
  16. String getPathInfo () - επιστρέφει τις πληροφορίες διαδρομής που σχετίζονται με τη διεύθυνση URL
  17. String getQueryString () - επιστρέφει τη συμβολοσειρά ερωτήματος που σχετίζεται με τη διεύθυνση URL του αιτήματος
  18. String getServletPath () - επιστρέφει το τμήμα των διευθύνσεων URL του αιτήματος που καλεί το JSP
  19. 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 (" ");Locale gurulocale = request.getLocale ();out.print (" ");String path = request.getPathInfo ();out.print (" ");Συμβολοσειρά lpath = request.get ();out.print (" ");String servername = request.getServerName ();out.print (" ");int portname = request.getServerPort ();out.print (" ");Καταμέτρηση hnames = request.getHeaderNames ();ενώ (hnames.hasMoreElements ()) {String paramName = (String) hnames.nextElement ();out.print (" ");String paramValue = request.getHeader (paramName);out.println (" ");}%>

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

Γραμμή κώδικα 17: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε το αντικείμενο περιόδου λειτουργίας της συγκεκριμένης περιόδου σύνδεσης και λαμβάνουμε την τιμή αντικειμένου αυτής της περιόδου σύνδεσης

Γραμμή κώδικα 19: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε τοπικές ρυθμίσεις για τη συγκεκριμένη τοπική περίοδο σύνδεσης i.een_US για αυτό το JSP.

Γραμμή κώδικα 21: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε πληροφορίες διαδρομής για αυτό το JSP. Σε αυτήν την περίπτωση, είναι μηδενική καθώς δεν αναφέρεται διαδρομή για τη διεύθυνση URL.

Γραμμή κώδικα 23: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε διαδρομή περιβάλλοντος, δηλαδή διαδρομή ρίζας

Γραμμή κώδικα 25: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε το όνομα του διακομιστή.

Γραμμή κώδικα 27: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε θύρα διακομιστή

Γραμμή κώδικα 29-35: Χρησιμοποιώντας αντικείμενο αιτήματος, λαμβάνουμε ονόματα κεφαλίδας που βγαίνουν ως απαρίθμηση, και ως εκ τούτου λαμβάνουμε όλες τις τιμές κεφαλίδας στα ονόματα κεφαλίδας.

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

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

Έξοδος :

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

Απόκριση διακομιστή JSP

  • Όταν μια αίτηση υποβάλλεται σε επεξεργασία και στη συνέχεια δημιουργείται η απάντηση από τον διακομιστή ιστού. Αποτελείται από μια γραμμή κατάστασης, κεφαλίδες απόκρισης, μια κενή γραμμή και ένα έγγραφο.
  • Είναι το αντικείμενο του HTTPServletResponseclass, το οποίο είναι ένα αντικείμενο απόκρισης.
  • Η γραμμή κατάστασης είναι μια έκδοση του HTML.

Οι κεφαλίδες απόκρισης αναφέρονται παρακάτω:

κεφαλίδα γκουρού κεφαλίδα γκουρού Τιμές
Το όνομα περιόδου σύνδεσης είναι " + gurusession + "
Το τοπικό όνομα είναι " + gurulocale + "
Το όνομα διαδρομής είναι " + διαδρομή + "
Η διαδρομή περιβάλλοντος είναι " + lipath + "
Το όνομα διακομιστή είναι " + servername + "
Η θύρα διακομιστή είναι " + portname + "
" + paramName + "" + paramValue + "
Επί κεφαλής Περιγραφή
Επιτρέπω Καθορίζει τις μεθόδους αιτήματος όπως GET, POST που ζητά ο διακομιστής
Έλεγχος προσωρινής μνήμης Το έγγραφο απόκρισης μπορεί να αποθηκευτεί στην κρυφή μνήμη. Μπορεί να είναι δημόσιο, ιδιωτικό και χωρίς προσωρινή μνήμη. Κανένα cache δεν καθορίζει ότι το έγγραφο δεν πρέπει να αποθηκεύεται στην κρυφή μνήμη
Σύνδεση Διδάσκει εάν το πρόγραμμα περιήγησης θα πρέπει να χρησιμοποιεί αποθηκευμένες συνδέσειςHTTP ή όχι. Η τιμή κλεισίματος δηλώνει ότι το πρόγραμμα περιήγησης δεν πρέπει να χρησιμοποιεί μόνιμη σύνδεση HTTPConnections και το "keep-live" σημαίνει χρήση μόνιμων συνδέσεων
Περιεχόμενο-διάθεση Για να ρωτήσετε τον χρήστη εάν θα αποθηκεύσει την απόκριση στο δίσκο ή όχι
Κωδικοποίηση περιεχομένου Η σελίδα πρέπει να κωδικοποιηθεί κατά τη μετάδοση
Μήκος περιεχομένου Αριθμός byte στην απόκριση
Τύπος περιεχομένου Καθορίζει τον τύπο απόκρισης MIME
Λήγει Καθορίζει έως πότε το περιεχόμενο θα πρέπει να θεωρηθεί ξεπερασμένο και δεν πρέπει να αποθηκεύεται προσωρινά
Τελευταία τροποποίηση Υποδεικνύει πότε τροποποιήθηκε τελευταία το έγγραφο
Τοποθεσία Θα πρέπει να συμπεριλαμβάνεται σε όλες τις απαντήσεις που έχουν κωδικό κατάστασης 300 ως κωδικό κατάστασης
Φρεσκάρω Καθορίζει τον τρόπο εύρεσης της ενημερωμένης σελίδας.
Επανάληψη Μπορεί να χρησιμοποιηθεί με απόκριση 503 για να πει στον πελάτη πόσο σύντομα μπορεί να επαναλάβει το αίτημα
Σετ-cookie Καθορίζει το cookie που σχετίζεται με τη σελίδα

Ακολουθούν οι μέθοδοι που χρησιμοποιούν αντικείμενο απόκρισης:

  1. String encodeRedirectURL (String URL) - κωδικοποιεί τη διεύθυνση URL στη μέθοδο redirectURL.
  2. String encodeURL (String URL) - κωδικοποιεί τη διεύθυνση URL συμπεριλαμβάνοντας το αναγνωριστικό περιόδου σύνδεσης.
  3. Boolean περιέχειHeader (Όνομα συμβολοσειράς) - περιέχει μια κεφαλίδα στο JSP ή όχι.
  4. Boolean isCommited () - η απόκριση έχει δεσμευτεί ή όχι.
  5. Void addCookie (Cookie cookie) - προσθέτει cookie στην απόκριση
  6. Void addDateHeader (Όνομα συμβολοσειράς, τιμή συμβολοσειράς) - προσθέτει το όνομα και την τιμή της κεφαλίδας απόκρισης
  7. Void addHeader (Όνομα συμβολοσειράς, τιμή συμβολοσειράς) - προσθέτει κεφαλίδα απόκρισης με όνομα και τιμή
  8. Void addIntHeader (Όνομα συμβολοσειράς, τιμή int) - προσθέτει κεφαλίδα απόκρισης με όνομα και ακέραια τιμή
  9. Void flushBuffer () - επιβάλλει περιεχόμενο στο buffer στην έξοδο στον πελάτη.
  10. Void reset () - διαγράφει δεδομένα στο buffer.
  11. Void resetBuffer - διαγράφει το buffer περιεχομένου στην απόκριση χωρίς διαγραφή κωδικών κατάστασης.
  12. Void sendError (intsc, Stringmsg) - στέλνει μια απάντηση σφάλματος στον πελάτη χρησιμοποιώντας κωδικό κατάστασης.
  13. Void sendRedirect (String location) - στέλνει μια προσωρινή απάντηση ανακατεύθυνσης στον πελάτη.
  14. Void setBufferSize (int μέγεθος) - ορίζει το μέγεθος του buffer του σώματος
  15. Void setCharacterEncoding (String charset) - ορίζει την κωδικοποίηση χαρακτήρων
  16. Void setContentType (Τύπος συμβολοσειράς) - ορίζει τον τύπο περιεχομένου της απόκρισης
  17. Void setContentLength (intlen) - ορίζει το μήκος περιεχομένου της απόκρισης
  18. Void setLocale (Locale lcl) - ορίζει τον τοπικό τύπο της απόκρισης
  19. 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");%>

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

Γραμμή κώδικα 13: Χρησιμοποιώντας αντικείμενο απόκρισης, λαμβάνουμε τοπικό αντικείμενο αυτής της περιόδου σύνδεσης JSP

Γραμμή κώδικα 15: Χρησιμοποιώντας αντικείμενο απόκρισης, το flushbuffer χρησιμοποιείται για να αναγκάσει το περιεχόμενο buffer στον πελάτη

Γραμμή κώδικα 16: Χρησιμοποιώντας αντικείμενο απόκρισης, λαμβάνουμε αντικείμενο συγγραφέα που λαμβάνει έξοδο στη ροή εξόδου

Code Line18: Χρησιμοποιώντας αντικείμενο απόκρισης, λαμβάνουμε τον τύπο περιεχομένου, δηλαδή τον τύπο αντικειμένου απόκρισης MIME

Γραμμή κώδικα 21: Χρησιμοποιώντας αντικείμενο απόκρισης, χρησιμοποιείται για αυτόματη φόρτωση κάθε 5 δευτερόλεπτα καθώς το 5 έχει οριστεί ως η δεύτερη παράμετρος

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

Παραγωγή:

  • Εδώ παίρνουμε την έξοδο όπως αυτό είναι από αντικείμενο συγγραφέα από το getWriter, το οποίο μας δίνει αντικείμενο και μπορούμε να εξάγουμε στη ροή εξόδου.
  • Παίρνουμε τις τοπικές ρυθμίσεις ως en_us και τον τύπο περιεχομένου ως κείμενο / html
  • Παίρνουμε το charset ως ISO 8859
  • Η σημερινή ημερομηνία ως η τρέχουσα ημερομηνία.

Κωδικοί κατάστασης HTTP JSP

  • Κατά την επεξεργασία του αιτήματος, δημιουργείται η απάντηση. Η γραμμή κατάστασης απόκρισης αποτελείται από την έκδοση HTTP, έναν κωδικό κατάστασης και ένα σχετικό μήνυμα.
  • Το μήνυμα σχετίζεται άμεσα με τον κωδικό κατάστασης και την έκδοση HTTP και καθορίζεται από τον διακομιστή.
  • Από προεπιλογή 200 ορίζεται ως κωδικός κατάστασης στο JSP, επομένως δεν χρειάζεται να ορίσουμε ρητά.
  • Μπορούμε να ορίσουμε ως μέθοδο respons.setStatus ()

Οι κωδικοί εμπίπτουν στις ακόλουθες 5 κατηγορίες:

  • 100-199 - Εδώ ο πελάτης υποδεικνύει ότι πρέπει να ανταποκριθεί με κάποια ενέργεια
  • 200-299 - Δηλώνει ότι το αίτημα είναι επιτυχές
  • 300-399 - Χρησιμοποιούνται για αρχεία που έχουν μετακινηθεί και συνήθως περιλαμβάνουν κεφαλίδα θέσης που υποδεικνύει νέα διεύθυνση
  • 400-499 - Υποδεικνύει σφάλμα από τον πελάτη
  • 500-599 - Υποδεικνύει σφάλμα από το διακομιστή

Μερικοί από τους κοινούς κωδικούς κατάστασης είναι οι εξής:

  • 200 - Υποδεικνύει ότι όλα είναι καλά
  • 301 - Μετακινήθηκε μόνιμα
  • 304 - Δεν έχει τροποποιηθεί από την τελευταία αλλαγή
  • 400 - Κακό αίτημα
  • 404 δεν βρέθηκε
  • 405 - Η μέθοδος δεν βρέθηκε
  • 500 Εσωτερικό σφάλμα διακομιστή
  • 503 Υπηρεσία Μη Διαθέσιμη
  • 505 - Η έκδοση HTTP δεν υποστηρίζεται

Μερικές από τις μεθόδους της παρατίθενται παρακάτω:

  1. Δημόσιο άκυρο setStatus (intstatusCode)

    Ορίζει τον κωδικό κατάστασης ό, τι θέλουμε να ορίσουμε σε αυτήν τη σελίδα JSP. Αυτό θα μας δώσει το μήνυμα του κωδικού κατάστασης που έχει οριστεί

  2. Public void sendRedirect (συμβολοσειρά URL)

    Δημιουργεί 302 απόκριση μαζί με την επικεφαλίδα θέσης που δίνει το URL του νέου εγγράφου

  3. Δημόσιο άκυρο sendError (intcode, Stringmsg)

    Στέλνει τον κωδικό κατάστασης μαζί με το σύντομο μήνυμα και διαμορφώνεται μέσα στο έγγραφο HTML.

Παράδειγμα:

Σε αυτό το παράδειγμα, στέλνουμε λάθος στη σελίδα JSP ρητά.

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%><κεφάλι>> Κωδικός κατάστασης γκουρού <άτομο><% response.sendError (404, "Η σελίδα του Guru δεν βρέθηκε"); %>

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

Γραμμή κώδικα 10: Χρησιμοποιώντας αντικείμενο απόκρισης στέλνουμε το σφάλμα σε μια σελίδα με δύο παραμέτρους.

  1. Κωδικός κατάστασης - Μπορεί να είναι οποιοδήποτε από τα παραπάνω. Σε αυτήν την περίπτωση, έχουμε περιγράψει ως 404
  2. Μήνυμα - Μπορεί να είναι οποιοδήποτε συγκεκριμένο μήνυμα που θέλουμε να δείξουμε το σφάλμα

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

Παραγωγή:

Εδώ λαμβάνουμε τον κωδικό σφάλματος ως 404, ο οποίος στάλθηκε από τον κώδικα και εμφανίζει επίσης το μήνυμα "Guru Page not found" που εμφανίζεται στην έξοδο.

Περίληψη:

  • Σε αυτό το άρθρο, μάθαμε για το αίτημα του πελάτη και την απόκριση του διακομιστή σχετικά με τον τρόπο υποκλοπής του αιτήματος και τον τρόπο χειρισμού των απαντήσεων.
  • Επίσης, μάθαμε για τους κωδικούς κατάστασης HTTP για να εμφανίσουμε κωδικούς σφάλματος ή κωδικούς επιτυχίας για ένα συγκεκριμένο αρχείο.