Solicitare client JSP
Acțiuni JSP care folosesc constructe în sintaxa XML pentru a controla comportamentul motorului servlet. Vom afla mai multe în detaliu despre diferitele elemente JSP Action, cum ar fi cererea clientului, răspunsul serverului, 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 URL-ului original | |
| 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ă adresa URL a paginii URL de referință | |
| 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.
- HttpSessiongetSession() – 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.
- ServletInputStreamgetInputStream() – 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 adresa URL
- String getQueryString() – returnează șirul de interogare care este asociat cu adresa URL a solicitării
- String getServletPath() – returnează partea de adrese URL a cererii care apelează JSP
- 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:
Linia de cod 17: Folosind obiectul de solicitare, obținem obiectul de sesiune al acelei sesiuni și obținem valoarea obiectului acelei sesiuni
Linia de cod 19: Folosind obiectul de solicitare, obținem locale pentru acea sesiune specială, i.een_US, pentru acel JSP.
Linia de cod 21: Folosind obiectul de solicitare, obținem informații despre cale pentru acel JSP. În acest caz, este nulă, deoarece nu există nicio cale pentru adresa URL menționată.
Linia de cod 23: Folosind obiectul de solicitare, obținem calea contextului, adică calea rădăcină
Linia de cod 25: Folosind obiectul de solicitare, obținem numele serverului.
Linia de cod 27: Folosind obiectul de solicitare, obținem portul serverului.
Linia de cod 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:
producție:
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 HTTPServletResponseclass, care este un obiect de 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:
- String encodeRedirectURL(String URL) – codifică adresa URL în metoda redirectURL.
- String encodeURL(String URL) – codifică adresa URL incluzând ID-ul sesiunii.
- Boolean containsHeader (nume șir) – conține sau nu un antet în JSP.
- Boolean isCommitted() – răspunsul a fost comis sau nu.
- Void addCookie (cookie cookie) – adaugă cookie 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(intsc,Stringmsg) – 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(intlen) – stabilește lungimea conținutului răspunsului
- Void setLocale (Locale lcl) – setează tipul local al răspunsului
- Void setStatus(intsc) – setează codul de stare al răspunsului
Exemplu:
În acest exemplu, acoperim diferite metode 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.*" %>
<!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:
Linia de cod 13: Folosind obiectul răspuns, obținem obiectul local al acestei sesiuni JSP
Linia de cod 15: Folosind obiectul de răspuns, flushbuffer este folosit pentru a forța conținutul buffer-ului în client
Linia de cod 16: Folosind obiectul de răspuns, obținem obiectul writer care primește rezultate în fluxul de ieșire
Linia de cod 18: Folosind obiectul răspuns, obținem tipul de conținut, adică tipul MIME al obiectului răspuns
Linia de cod 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 ieșirea deoarece aceasta este de la obiectul writer de la getWriter, care ne oferă obiect și putem scoate î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ă.
Codurile de stare HTTP JSP
- 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ă
Metode de cod de stare HTTP în JSP
Unele dintre metodele codului de stare din JSP sunt enumerate mai jos:
- Public void setStatus(intstatusCode): 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 sendRedirect(String URL): Acesta generează răspunsul 302 împreună cu antetul locației care oferă URL-ul noului document
- Public void sendError(intcode,Stringmsg): 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:
Linia de cod 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 obținem un cod de eroare ca 404, care a fost trimis din cod și afișează, de asemenea, mesajul „Pagina Guru nu a fost găsită” văzut în rezultat.
Rezumat
- În acest articol, am aflat despre cererea clientului și răspunsul serverului despre modul în care cererea este interceptată și cum sunt manipulate răspunsurile.
- Acțiuni JSP care folosesc constructe în sintaxa XML pentru a controla comportamentul motorului servlet.
- Când pagina web este solicitată, aceasta trimite informații către serverul web în antetul HTTP.
- 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.
- 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.



