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:

  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. HttpSessiongetSession() – 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. ServletInputStreamgetInputStream() – 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 adresa URL
  17. String getQueryString() – returnează șirul de interogare care este asociat cu adresa URL a solicitării
  18. String getServletPath() – returnează partea de adrese URL a cererii care apelează JSP
  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:

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:

Solicitare client JSP

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:

  1. String encodeRedirectURL(String URL) – codifică adresa URL în metoda redirectURL.
  2. String encodeURL(String URL) – codifică adresa URL incluzând ID-ul 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. Void addCookie (cookie cookie) – adaugă cookie 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(intsc,Stringmsg) – 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(intlen) – stabilește lungimea conținutului răspunsului
  18. Void setLocale (Locale lcl) – setează tipul local al răspunsului
  19. 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:

Răspuns server JSP

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:

  1. 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
  2. Public void sendRedirect(String URL): Acesta generează răspunsul 302 împreună cu antetul locației care oferă URL-ul noului document
  3. 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.

  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:

Codurile de stare HTTP JSP

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.