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.

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:
- Cookie[] getCookies() โ returneazฤ o matrice care conศine obiecte cookie pe care clientul le-a trimis
- Enumerarea getAttributeNames() โ conศine enumerarea numelor de atribute pentru cerere
- Enumerare getHeaderNames() โ conศine enumerarea numelor antetului.
- Enumerarea getParameterNames() โ conศine enumerarea obศinerii numelor de parametri รฎn cerere.
- HttpSession getSession() โ returneazฤ sesiunea curentฤ asociatฤ cu cererea sau dacฤ nu are o sesiune, va crea una nouฤ.
- 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.
- Obiect getAttribute (nume ศir) โ returneazฤ valoarea atributului numit ca obiect.
- ServletInputStream getInputStream() โ preia corpul cererii ca date binare.
- String getAuthType() โ returneazฤ numele schemei de autentificare pentru a proteja servletul
- String getCharacterEncoding() โ returneazฤ numele codificฤrii caracterelor utilizate รฎn corpul cererii.
- String getContentType() โ returneazฤ tipul MIME al corpului cererii.
- String getContextPath() โ returneazฤ partea URI-ului cererii indicฤ calea contextului URI-ului
- String getHeader (nume ศir) โ returneazฤ antetul cererii ca ศir
- String getMethod() โ returneazฤ numele metodei HTTP precum GET, POST
- String getParameter(Nume ศir) โ returneazฤ parametrul cererii ca ศir.
- String getPathInfo() โ returneazฤ informaศiile despre cale asociate cu URL
- String getQueryString() โ returneazฤ ศirul de interogare asociat cu cererea URL
- String getServletPath() โ returneazฤ partea din URLs ale cererii care apeleazฤ JSP-ul
- 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:
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:
- Codificare ศir de caractereRedirecศionareURL(ลir URL) - codificฤ URL รฎn redirecศionareURL metodฤ.
- Codificare ศir de caractereURL(ลir URL) - codificฤ URL prin includerea ID-ului sesiunii.
- Boolean containsHeader (nume ศir) โ conศine sau nu un antet รฎn JSP.
- Boolean isCommitted() โ rฤspunsul a fost comis sau nu.
- AdฤugaศiCookie-ul (Cookie cookie) anulat โ adaugฤ cookie-uri la rฤspuns
- Void addDateHeader (nume ศir, valoare ศir) โ adaugฤ numele ศi valoarea datei antetului rฤspunsului
- Void addHeader (nume ศir, valoare ศir) โ adaugฤ antetul rฤspunsului cu nume ศi valoare
- Void addIntHeader(Nume ศir, valoare int) โ adaugฤ antetul rฤspunsului cu nume ศi valoare รฎntreagฤ
- Flush de golBuffer() - forศeazฤ conศinutul din buffer la ieศirea cฤtre client.
- Void reset() - ศterge datele din buffer.
- Resetare anulatฤBuffer - ศterge tamponul de conศinut din rฤspuns fฤrฤ a ศterge codurile de stare.
- Void sendError(int sc,String mesaj) โ trimite un rฤspuns de eroare cฤtre client folosind codul de stare.
- Void sendRedirect (Locaศie ศir) โ trimite un rฤspuns temporar de redirecศionare cฤtre client.
- Set golBufferDimensiune (dimensiune int) - stabileศte dimensiunea tamponului corpului
- Void setCharacterEncoding (set de caractere ศir) โ seteazฤ codificarea caracterelor
- Void setContentType(Tipul ศir) โ stabileศte tipul de conศinut al rฤspunsului
- Void setContentLength(int len) โ stabileศte lungimea conศinutului rฤspunsului
- Void setLocale (Locale lcl) โ seteazฤ tipul local al rฤspunsului
- 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:
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:
- 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
- Public void trimiteRedirect(String) URL): Genereazฤ un rฤspuns 302 รฎmpreunฤ cu antetul locaศiei. URL a noului document
- 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.
- Cod de stare โ Poate fi oricare dintre cele de mai sus. รn acest caz, am descris ca fiind 404
- 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:
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.



