Solicitare client JSP

โšก Rezumat inteligent

Cererea client JSP ศ™i rฤƒspunsul serverului utilizeazฤƒ elemente de acศ›iune JSP pentru a controla motorul servlet. Browserul trimite informaศ›ii prin antete HTTP, serverul returneazฤƒ o linie de stare ศ™i antete, iar codurile de stare HTTP raporteazฤƒ rezultatul fiecฤƒrei cereri.

  • ๐Ÿ“จ Solicitare client: Browserul trimite date cฤƒtre server รฎn antetele de cerere HTTP, citite prin HttpServletRequest.
  • ๐Ÿงพ Anteturi de solicitare: Accept, Accept-language, Connection, Cookie, Host ศ™i User-agent descriu clientul.
  • ๐Ÿ“ค Rฤƒspuns server: HttpServletResponse returneazฤƒ o linie de stare, anteturile de rฤƒspuns ศ™i documentul.
  • ๐Ÿ”ง Metode de rฤƒspuns: addHeader(), sendRedirect(), sendError() ศ™i setStatus() modeleazฤƒ rฤƒspunsul.
  • ๐Ÿ”ข Stare Codes: Grupate 100โ€“599; cele comune includ 200, 301, 404 ศ™i 500.
  • ๐Ÿงช Exemple: Paginile JSP funcศ›ionale citesc anteturile, seteazฤƒ un interval de reรฎmprospฤƒtare ศ™i trimit o eroare 404.

Solicitare client JSP

Acศ›iunile JSP utilizeazฤƒ construcศ›ii รฎn sintaxa XML pentru a controla comportamentul motorului servlet. Vom afla mai multe despre diverse elemente ale acศ›iunii JSP, cum ar fi solicitarea clientului, rฤƒspunsul serverului ศ™i codurile de stare HTTP.

Solicitare client JSP

  • Cรขnd pagina web este solicitatฤƒ, aceasta trimite informaศ›ii cฤƒtre serverul web รฎn antetul HTTP.
  • Putem folosi aceste informaศ›ii folosind obiectul HTTPServletRequest.
  • Informaศ›iile trimise de browser sunt stocate รฎn antetul solicitฤƒrii din cererea HTTP.
  • Utilizฤƒm diferite antete pentru a trimite informaศ›ii cฤƒtre obiectul de solicitare.

Anteturi รฎn JSP

Diferite antete รฎn JSP sunt descrise mai jos:

Antet Descriere Exemplu
Accept Specificฤƒ tipurile MIME pe care browserul sau alศ›i clienศ›i le pot gestiona Imagine/png sau imagine/jpeg
Accept-charset Foloseศ™te setul de caractere folosit de browser pentru a afiศ™a informaศ›iile ISO-8859-1
Accept - Codificare Specificฤƒ tipul de codificare gestionat de browser Gzip sau comprimaศ›i
Acceptฤƒ-limbaj Specificฤƒ limba specificatฤƒ de clienศ›i En,en_us
Autorizare Antet folosit de clienศ›i atunci cรขnd รฎncearcฤƒ sฤƒ acceseze pagini web protejate cu parolฤƒ
Conexiune Indicฤƒ dacฤƒ clientul poate gestiona conexiuni HTTP persistente (browserul poate prelua mai multe fiศ™iere) ศšine รฎn viaศ›ฤƒ
Lungimea conศ›inutului Aplicabil pentru postarea cererilor. Oferฤƒ dimensiunea datelor post de octeศ›i
Cookie Returneazฤƒ cookie-ul la server (cele care au fost trimise anterior cฤƒtre browser)
Gazdฤƒ Specificฤƒ gazda ศ™i portul fiศ™ierului original URL
Dacฤƒ se modificฤƒ de atunci Indicฤƒ faptul cฤƒ necesitฤƒ doar o paginฤƒ dacฤƒ aceasta a fost schimbatฤƒ sau modificatฤƒ
Dacฤƒ nemodificatฤƒ din moment ce Indicฤƒ faptul cฤƒ necesitฤƒ o paginฤƒ numai dacฤƒ nu a fost schimbatฤƒ sau modificatฤƒ
Referinศ›ฤƒ Indicฤƒ URL de referire URL paginฤƒ
Agent utilizator Identificฤƒ browserul sau solicitarea clientului

Metode de antet HTTP รฎn JSP

Urmฤƒtoarele metode sunt utilizate pentru a citi antetul HTTP din pagina JSP:

  1. Cookie[] getCookies() โ€“ returneazฤƒ o matrice care conศ›ine obiecte cookie pe care clientul le-a trimis
  2. Enumerarea getAttributeNames() โ€“ conศ›ine enumerarea numelor de atribute pentru cerere
  3. Enumerare getHeaderNames() โ€“ conศ›ine enumerarea numelor antetului.
  4. Enumerarea getParameterNames() โ€“ conศ›ine enumerarea obศ›inerii numelor de parametri รฎn cerere.
  5. HttpSession getSession() โ€“ returneazฤƒ sesiunea curentฤƒ asociatฤƒ cu cererea sau dacฤƒ nu are o sesiune, va crea una nouฤƒ.
  6. Localizare getLocale() โ€“ returneazฤƒ localul preferat รฎn care clientul va accepta conศ›inut. Acesta a fost atribuit rฤƒspunsului. รŽn mod implicit, valoarea va fi localitatea implicitฤƒ a serverului.
  7. Obiect getAttribute (nume ศ™ir) โ€“ returneazฤƒ valoarea atributului numit ca obiect.
  8. ServletInputStream getInputStream() โ€“ preia corpul cererii ca date binare.
  9. String getAuthType() โ€“ returneazฤƒ numele schemei de autentificare pentru a proteja servletul
  10. String getCharacterEncoding() โ€“ returneazฤƒ numele codificฤƒrii caracterelor utilizate รฎn corpul cererii.
  11. String getContentType() โ€“ returneazฤƒ tipul MIME al corpului cererii.
  12. String getContextPath() โ€“ returneazฤƒ partea URI-ului cererii indicฤƒ calea contextului URI-ului
  13. String getHeader (nume ศ™ir) โ€“ returneazฤƒ antetul cererii ca ศ™ir
  14. String getMethod() โ€“ returneazฤƒ numele metodei HTTP precum GET, POST
  15. String getParameter(Nume ศ™ir) โ€“ returneazฤƒ parametrul cererii ca ศ™ir.
  16. String getPathInfo() โ€“ returneazฤƒ informaศ›iile despre cale asociate cu URL
  17. String getQueryString() โ€“ returneazฤƒ ศ™irul de interogare asociat cu cererea URL
  18. String getServletPath() โ€“ returneazฤƒ partea din URLs ale cererii care apeleazฤƒ JSP-ul
  19. String[] getParameterValues(Nume ศ™ir) โ€“ returneazฤƒ matricea de obiecte ศ™ir care conศ›in valorile pe care le are parametrul de solicitare

Exemplu:

รŽn exemplul de mai jos, folosim diferite metode folosind obiectul de solicitare

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!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>Client Request Guru JSP</title>
</head>
<body>
<h2>Client Request Guru JSP</h2>

<table border="1">
<tr>
<th>guru header</th><th>guru header Value(s)</th>
</tr>
<%
    HttpSession gurusession = request.getSession();
    out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>");
    Locale gurulocale = request.getLocale ();
    out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>");
    String path = request.getPathInfo();
    out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>");
    String lpath = request.get();
    out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>");
    String servername = request.getServerName();
    out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>");
    int portname = request.getServerPort();
    out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>");
    Enumeration hnames = request.getHeaderNames();
    while(hnames.hasMoreElements()) {
        String paramName = (String)hnames.nextElement();
        out.print ("<tr><td>" + paramName + "</td>" );

        String paramValue = request.getHeader(paramName);
        out.println("<td> " + paramValue + "</td></tr>");
    }

%>

Explicaศ›ia codului:

Code Linia 17: Folosind obiectul de solicitare, obศ›inem obiectul de sesiune al acelei sesiuni ศ™i obศ›inem valoarea obiectului acelei sesiuni

Code Linia 19: Folosind obiectul request, obศ›inem setฤƒrile regionale ale acelei sesiuni, adicฤƒ setฤƒrile regionale en_US pentru JSP-ul respectiv.

Code Linia 21: Folosind obiectul request, obศ›inem informaศ›ii despre calea pentru acel JSP. รŽn acest caz, valoarea este nulฤƒ, deoarece nu existฤƒ o cale pentru URL menศ›ionat.

Code Linia 23: Folosind obiectul de solicitare, obศ›inem calea contextului, adicฤƒ calea rฤƒdฤƒcinฤƒ

Code Linia 25: Folosind obiectul de solicitare, obศ›inem numele serverului.

Code Linia 27: Folosind obiectul de solicitare, obศ›inem portul serverului.

Code Linia 29-35: Folosind obiectul de solicitare, obศ›inem nume de antet care apar ca enumerare ศ™i, prin urmare, obศ›inem toate valorile antetului รฎn numele antetului.

รŽn aceasta, obศ›inem toate valorile antetului ca a Cookie, gazdฤƒ, conexiune, accept limba, accept codificare.

Cรขnd executaศ›i codul de mai sus, obศ›ineศ›i urmฤƒtoarea ieศ™ire:

Solicitare client JSP

ieศ™ire:

Primim o serie de valori precum numele sesiunii, numele localului, numele cฤƒii, numele serverului, numele portului, gazda, calea contextului ศ™i toate valorile antet ale acesteia JSP.

Rฤƒspuns server JSP

  • Cรขnd o cerere este procesatฤƒ ศ™i apoi rฤƒspunsul este generat de pe serverul web. Acesta constฤƒ dintr-o linie de stare, anteturi de rฤƒspuns, o linie goalฤƒ ศ™i document.
  • Este obiectul clasei HTTPServletResponse, care este un obiect de tip rฤƒspuns.
  • Linia de stare este o versiune de HTML.

Antete de rฤƒspuns รฎn JSP

Antetele de rฤƒspuns รฎn JSP sunt menศ›ionate mai jos:

Antet Descriere
Permite Specificฤƒ metodele de solicitare precum GET, POST pe care serverul le solicitฤƒ
Controlul cache-ului Documentul de rฤƒspuns poate fi stocat รฎn cache. Poate fi public, privat ศ™i fฤƒrฤƒ cache. Nicio memorie cache specificฤƒ cฤƒ documentul nu trebuie sฤƒ fie stocat รฎn cache
Conexiune Acesta indicฤƒ dacฤƒ browserul ar trebui sฤƒ foloseascฤƒ sau nu salvateHTTPConnections. Valoarea รฎnchidere reprezintฤƒ faptul cฤƒ browserul nu ar trebui sฤƒ foloseascฤƒ persistent รฎn HTTPConnections, iar โ€žkeep-aliveโ€ รฎnseamnฤƒ folosirea conexiunilor persistente
Conศ›inut-dispoziศ›ie Pentru a รฎntreba utilizatorul dacฤƒ sฤƒ salveze rฤƒspunsul pe disc sau nu
Codificarea conศ›inutului Pagina trebuie sฤƒ fie codificatฤƒ รฎn timpul transmiterii
Lungimea conศ›inutului Numฤƒrul de octeศ›i din rฤƒspuns
Tip de conศ›inut Specificฤƒ tipul MIME de rฤƒspuns
expirฤƒ Specificฤƒ pรขnฤƒ cรขnd conศ›inutul trebuie considerat รฎnvechit ศ™i nu ar trebui sฤƒ fie stocat รฎn cache
Ultima actualizare Indicฤƒ cรขnd documentul a fost modificat ultima datฤƒ
Locaศ›ie Ar trebui sฤƒ fie inclus cu toate rฤƒspunsurile care au codul de stare 300 ca cod de stare
Reรฎmprospฤƒta Specificฤƒ cum sฤƒ gฤƒsiศ›i pagina actualizatฤƒ.
Reรฎncercaศ›i dupฤƒ Poate fi folosit cu rฤƒspunsul 503 pentru a spune clientului cรขt de curรขnd poate repeta cererea
Set-cookie Specificฤƒ cookie-ul asociat paginii

Metode de antet de rฤƒspuns HTTP รฎn JSP

Urmฤƒtoarele sunt metodele din JSP care utilizeazฤƒ obiectul rฤƒspuns:

  1. Codificare ศ™ir de caractereRedirecศ›ionareURL(ลžir URL) - codificฤƒ URL รฎn redirecศ›ionareURL metodฤƒ.
  2. Codificare ศ™ir de caractereURL(ลžir URL) - codificฤƒ URL prin includerea ID-ului sesiunii.
  3. Boolean containsHeader (nume ศ™ir) โ€“ conศ›ine sau nu un antet รฎn JSP.
  4. Boolean isCommitted() โ€“ rฤƒspunsul a fost comis sau nu.
  5. Adฤƒugaศ›iCookie-ul (Cookie cookie) anulat โ€“ adaugฤƒ cookie-uri la rฤƒspuns
  6. Void addDateHeader (nume ศ™ir, valoare ศ™ir) โ€“ adaugฤƒ numele ศ™i valoarea datei antetului rฤƒspunsului
  7. Void addHeader (nume ศ™ir, valoare ศ™ir) โ€“ adaugฤƒ antetul rฤƒspunsului cu nume ศ™i valoare
  8. Void addIntHeader(Nume ศ™ir, valoare int) โ€“ adaugฤƒ antetul rฤƒspunsului cu nume ศ™i valoare รฎntreagฤƒ
  9. Flush de golBuffer() - forศ›eazฤƒ conศ›inutul din buffer la ieศ™irea cฤƒtre client.
  10. Void reset() - ศ™terge datele din buffer.
  11. Resetare anulatฤƒBuffer - ศ™terge tamponul de conศ›inut din rฤƒspuns fฤƒrฤƒ a ศ™terge codurile de stare.
  12. Void sendError(int sc,String mesaj) โ€“ trimite un rฤƒspuns de eroare cฤƒtre client folosind codul de stare.
  13. Void sendRedirect (Locaศ›ie ศ™ir) โ€“ trimite un rฤƒspuns temporar de redirecศ›ionare cฤƒtre client.
  14. Set golBufferDimensiune (dimensiune int) - stabileศ™te dimensiunea tamponului corpului
  15. Void setCharacterEncoding (set de caractere ศ™ir) โ€“ seteazฤƒ codificarea caracterelor
  16. Void setContentType(Tipul ศ™ir) โ€“ stabileศ™te tipul de conศ›inut al rฤƒspunsului
  17. Void setContentLength(int len) โ€“ stabileศ™te lungimea conศ›inutului rฤƒspunsului
  18. Void setLocale (Locale lcl) โ€“ seteazฤƒ tipul local al rฤƒspunsului
  19. Void setStatus(int sc) โ€“ seteazฤƒ codul de stare al rฤƒspunsului

Exemplu:

รŽn acest exemplu, acoperim diferite metode: getLocale, flushbuffer, getWriter, getContentType, setIntHeader.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ page import="java.io.* java.util.*" %>
<!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 Action Response</title>
</head>
<body>
<center>
<h2>Guru Response</h2>
<%
Locale lcl = response.getLocale();
out.println("Locale is : " + lcl + "\n");
response.flushBuffer();
PrintWriter output = response.getWriter();
output.println("This is from writer object");
String type = response.getContentType();
out.println("The content type : " + type + "\n");
    // Set refresh,autoload time as 5 seconds
    response.setIntHeader("Refresh", 5);
    //Get current time
    Date dt = new Date();
    out.println("Today's date is : " +dt.toString() + "\n");
%>
</center>
</body>
</html>

Explicaศ›ia codului:

Code Linia 13: Folosind obiectul rฤƒspuns, obศ›inem obiectul local al acestei sesiuni JSP

Code Linia 15: Folosind obiectul de rฤƒspuns, flushbuffer este folosit pentru a forศ›a conศ›inutul buffer-ului รฎn client

Code Linia 16: Folosind obiectul de rฤƒspuns, obศ›inem obiectul writer care primeศ™te rezultate รฎn fluxul de ieศ™ire

Code Linia 18: Folosind obiectul rฤƒspuns, obศ›inem tipul de conศ›inut, adicฤƒ tipul MIME al obiectului rฤƒspuns

Code Linia 21: Folosind obiectul de rฤƒspuns, este folosit pentru a รฎncฤƒrca automat la fiecare 5 secunde, deoarece 5 este setat ca al doilea parametru

Cรขnd executaศ›i codul de mai sus, obศ›ineศ›i urmฤƒtoarea ieศ™ire:

Rฤƒspuns server JSP

ieศ™ire:

  • Aici obศ›inem rezultatul, deoarece acesta este de la obiectul writer din getWriter, care ne oferฤƒ un obiect ศ™i putem afiศ™a ieศ™irea รฎn fluxul de ieศ™ire.
  • Obศ›inem localitatea ca en_us ศ™i tipul de conศ›inut ca text/html
  • Primim setul de caractere ca ISO 8859
  • Data de astฤƒzi ca datฤƒ curentฤƒ.

Stare HTTP JSP Codes

  • Cรขnd cererea este procesatฤƒ, rฤƒspunsul este generat. Linia de stare a rฤƒspunsului constฤƒ dintr-o versiune HTTP, un cod de stare ศ™i un mesaj asociat.
  • Mesajul este asociat direct cu codul de stare ศ™i versiunea HTTP ศ™i este determinat de server.
  • รŽn mod implicit, 200 este setat ca cod de stare รฎn JSP, deci nu trebuie sฤƒ setฤƒm รฎn mod explicit.
  • Putem seta ca metodฤƒ response.setStatus().

Codurile se รฎncadreazฤƒ รฎn urmฤƒtoarele 5 categorii:

  • 100-199 โ€“ Aici clientul indicฤƒ faptul cฤƒ ar trebui sฤƒ rฤƒspundฤƒ printr-o acศ›iune
  • 200-299 โ€“ รŽnseamnฤƒ cฤƒ cererea a avut succes
  • 300-399 โ€“ Sunt folosite pentru fiศ™ierele care au fost mutate ศ™i includ de obicei un antet de locaศ›ie care indicฤƒ o nouฤƒ adresฤƒ
  • 400-499 โ€“ Indicฤƒ o eroare a clientului
  • 500-599 โ€“ Indicฤƒ o eroare de cฤƒtre server

Unele dintre codurile de stare comune sunt mai jos:

  • 200 โ€“ Indicฤƒ cฤƒ totul este รฎn regulฤƒ
  • 301 โ€“ S-a mutat definitiv
  • 304 โ€“ Nemodificat de la ultima modificare
  • 400 โ€“ Cerere proastฤƒ
  • 404 Nu a fost gasit
  • 405 โ€“ Metoda nu a fost gฤƒsitฤƒ
  • 500 Eroare internฤƒ a server-ului
  • 503 Serviciu Indisponibil
  • 505 โ€“ Versiunea HTTP nu este acceptatฤƒ

Stare HTTP Code Metode รฎn JSP

Unele dintre metodele codului de stare din JSP sunt enumerate mai jos:

  1. Public void setStatus(int statusCode): Seteazฤƒ codul de stare, oricare vrem sฤƒ setฤƒm รฎn acea paginฤƒ JSP. Acest lucru ne va oferi mesajul codului de stare care a fost setat
  2. Public void trimiteRedirect(String) URL): Genereazฤƒ un rฤƒspuns 302 รฎmpreunฤƒ cu antetul locaศ›iei. URL a noului document
  3. Public void sendError(int cod, String mesaj): Trimite codul de stare รฎmpreunฤƒ cu mesajul scurt ศ™i este formatat รฎn documentul HTML.

Exemplu:

รŽn acest exemplu, trimitem o eroare cฤƒtre pagina JSP รฎn mod explicit.

<%@ 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">
<title>Guru Status Code</title>
</head>
<body>
<% response.sendError(404,"Guru Page Not Found"); %>
</body>
</html>

Explicaศ›ia codului:

Code Linia 10: Folosind obiectul de rฤƒspuns, trimitem eroarea cฤƒtre o paginฤƒ cu doi parametri.

  1. Cod de stare โ€“ Poate fi oricare dintre cele de mai sus. รŽn acest caz, am descris ca fiind 404
  2. Mesaj โ€“ Poate fi orice mesaj specific pe care vrem sฤƒ รฎl arฤƒtฤƒm eroarea

Dacฤƒ executaศ›i codul de mai sus, obศ›ineศ›i urmฤƒtoarea ieศ™ire:

Stare HTTP JSP Codes

ieศ™ire:

Aici primim codul de eroare 404, care a fost trimis de cod ศ™i afiศ™eazฤƒ ศ™i โ€žGuru Mesajul โ€žPaginฤƒ negฤƒsitฤƒโ€ apare รฎn rezultat.

รŽntrebฤƒri frecvente

HttpServletRequest transportฤƒ datele trimise de client cฤƒtre server, cum ar fi anteturile ศ™i parametrii. HttpServletResponse transportฤƒ datele trimise รฎnapoi de la server, inclusiv coduri de stare, anteturile de rฤƒspuns ศ™i conศ›inutul documentului.

Codul de stare 404 รฎnseamnฤƒ cฤƒ resursa solicitatฤƒ nu a fost gฤƒsitฤƒ pe server. รŽn JSP, รฎl puteศ›i trimite explicit cu response.sendError(404, โ€žmessageโ€) pentru a afiศ™a o paginฤƒ personalizatฤƒ de negฤƒsit.

Foloseศ™te obiectul request: getHeaderNames() returneazฤƒ o enumerare a numelor de antete, iar getHeader(name) returneazฤƒ fiecare valoare a antetului. Parcurge numele pentru a citi fiecare antet trimis de client.

IA poate analiza jurnalele de antete, poate semnala antete lipsฤƒ sau configurate greศ™it, poate detecta probleme de securitate, cum ar fi absenศ›a controlului cache-ului ศ™i poate rezuma modelele de trafic.ping Dezvoltatorii depaneazฤƒ ศ™i optimizeazฤƒ gestionarea cererilor ศ™i rฤƒspunsurilor mai rapid.

Da. Inteligenศ›a artificialฤƒ poate genera scriptlet-uri JSP care citesc parametrii ศ™i anteturile cererilor, seteazฤƒ anteturile de rฤƒspuns ศ™i trimit coduri de stare dintr-o descriere รฎn limbaj simplu, pe care dezvoltatorii o verificฤƒ apoi pentru corectitudine ศ™i securitate.

Rezumaศ›i aceastฤƒ postare cu: