JSP zahtjev klijenta

JSP radnje koje koriste konstrukcije u XML sintaksi za kontrolu ponašanja stroja servleta. Naučit ćemo detaljnije o različitim elementima JSP Action kao što su zahtjev klijenta, odgovor poslužitelja, HTTP statusni kodovi.

JSP zahtjev klijenta

  • Kada se zatraži web stranica, ona šalje informacije web poslužitelju u HTTP zaglavlju.
  • Ove informacije možemo koristiti koristeći HTTPServletRequest objekt.
  • Informacije koje šalje preglednik pohranjuju se u zaglavlju zahtjeva HTTP zahtjeva.
  • Koristimo različita zaglavlja za slanje informacija objektu zahtjeva.

Zaglavlja u JSP-u

Različita zaglavlja u JSP-u opisana su u nastavku:

Kombajn Description Primjer
Prihvatiti Određuje vrste MIME koje preglednik ili drugi klijenti mogu obraditi Slika/png ili slika/jpeg
Prihvati skup znakova Koristi skup znakova koji koristi preglednik za prikaz informacija ISO-8859-1
Prihvati - Kodiranje Određuje vrstu kodiranja kojim upravlja preglednik Gzip ili komprimiraj
Prihvati-jezik Određuje klijentski specificirani jezik En,en_us
Autorizacija Zaglavlje koje koriste klijenti kada pokušavaju pristupiti web stranicama zaštićenim lozinkom  
priključak Pokazuje može li klijent rukovati trajnim HTTP vezama (preglednik može dohvatiti više datoteka) Držati na životu
Sadržaj-duljina Primjenjivo na zahtjeve za objavu. Daje veličinu post podataka u bajtovima  
kolačić Vraća kolačiće na poslužitelj (one koji su prethodno bili poslani pregledniku)  
Nalog Domaćina, Određuje host i port izvornog URL-a  
Ako je od tada izmijenjen Označava da zahtijeva samo stranicu ako je promijenjena ili modificirana  
Ako nije modificiran od Označava da zahtijeva stranicu samo ako nije promijenjena ili modificirana  
Preporuka Označava URL referentne URL stranice  
Korisnički agent Identificira preglednik ili klijent koji postavlja zahtjev  

Metode HTTP zaglavlja u JSP-u

Za čitanje HTTP zaglavlja na JSP stranici koriste se sljedeće metode:

  1. Kolačić[] getCookies() – vraća niz koji sadrži objekte kolačića koje je klijent poslao
  2. Nabrajanje getAttributeNames() – sadrži popis imena atributa za zahtjev
  3. Nabrajanje getHeaderNames() – sadrži nabrajanje imena zaglavlja.
  4. Nabrajanje getParameterNames() – sadrži nabrajanje naziva parametara dobivanja u zahtjevu.
  5. HttpSessiongetSession() – vraća trenutnu sesiju povezanu sa zahtjevom ili ako nema sesiju, stvorit će novu.
  6. Lokacija getLocale() – vraća željenu lokalizaciju u kojoj će klijent prihvatiti sadržaj. Dodijeljen je odgovoru. Prema zadanim postavkama, vrijednost će biti zadana lokalizacija poslužitelja.
  7. Objekt getAttribute(naziv niza) – vraća vrijednost imenovanog atributa kao objekt.
  8. ServletInputStreamgetInputStream() – dohvaća tijelo zahtjeva kao binarne podatke.
  9. String getAuthType() – vraća naziv sheme provjere autentičnosti za zaštitu servleta
  10. String getCharacterEncoding() – vraća naziv kodiranja znakova korištenog u tijelu zahtjeva.
  11. String getContentType() – vraća MIME tip tijela zahtjeva.
  12. String getContextPath() – vraća dio zahtjeva URI označava putanju konteksta URI-ja
  13. String getHeader (naziv niza) – vraća zaglavlje zahtjeva kao niz
  14. String getMethod() – vraća naziv HTTP metode poput GET, POST
  15. String getParameter(naziv niza) – vraća parametar zahtjeva kao niz.
  16. String getPathInfo() – vraća informacije o putu povezane s URL-om
  17. String getQueryString() – vraća niz upita koji je povezan s URL-om zahtjeva
  18. String getServletPath() – vraća dio URL-ova zahtjeva koji poziva JSP
  19. String[] getParameterValues(naziv niza) – vraća niz objekata niza koji sadrže vrijednosti koje ima parametar zahtjeva

Primjer:

U donjem primjeru koristimo različite metode pomoću objekta zahtjeva

<%@ 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>");
	}

%>

Objašnjenje koda:

Redak koda 17: Koristeći objekt zahtjeva, dobivamo objekt sesije te određene sesije i dobivamo vrijednost objekta te sesije

Redak koda 19: Koristeći objekt zahtjeva, dobivamo lokalizaciju te određene sesije tj. lokalizaciju een_US za taj JSP.

Redak koda 21: Koristeći objekt zahtjeva, dobivamo informacije o putanji za taj JSP. U ovom slučaju, to je null jer nema spomenutog puta za URL.

Redak koda 23: Pomoću objekta zahtjeva dobivamo putanju konteksta, tj. korijensku stazu

Redak koda 25: Koristeći objekt zahtjeva, dobivamo ime poslužitelja.

Redak koda 27: Koristeći objekt zahtjeva, dobivamo port poslužitelja.

Redak koda 29-35: Koristeći objekt zahtjeva, dobivamo nazive zaglavlja koji izlaze kao enumeracija, i stoga dobivamo sve vrijednosti zaglavlja u nazivima zaglavlja.

U ovome dobivamo sve vrijednosti zaglavlja kao a kolačić, host, veza, prihvati jezik, prihvati kodiranje.

Kada izvršite gornji kod, dobit ćete sljedeći izlaz:

JSP zahtjev klijenta

Izlaz:

Dobivamo niz vrijednosti kao što su naziv sesije, naziv lokaliteta, naziv putanje, naziv poslužitelja, naziv priključka, host, put konteksta i sve vrijednosti zaglavlja toga JSP.

JSP odgovor poslužitelja

  • Kada se zahtjev obrađuje, a zatim se odgovor generira s web poslužitelja. Sastoji se od retka statusa, zaglavlja odgovora, praznog retka i dokumenta.
  • To je objekt HTTPServletResponseclass, koji je objekt odgovora.
  • Statusna linija je verzija HTML-a.

Zaglavlja odgovora u JSP-u

Zaglavlja odgovora u JSP-u navedena su u nastavku:

Kombajn Description
dopustiti Određuje metode zahtjeva poput GET, POST koje poslužitelj zahtijeva
Kontrola predmemorije Dokument odgovora može se spremiti u predmemoriju. Može biti javno, privatno i bez predmemorije. No cache navodi da dokument ne treba biti u predmemoriji
priključak Upućuje treba li preglednik koristiti spremljene HTTP veze ili ne. Close vrijednost predstavlja da preglednik ne bi trebao koristiti trajne veze u HTTP vezama, a "keep-alive" znači korištenje trajnih veza
Sadržaj-dispozicija Pitati korisnika treba li spremiti odgovor na disk ili ne
Kodiranje sadržaja Stranica mora biti kodirana tijekom prijenosa
Sadržaj-duljina Broj bajtova u odgovoru
Vrsta sadržaja Određuje MIME tip odgovora
Istječe Određuje do kada se sadržaj treba smatrati zastarjelim i ne smije se spremati u predmemoriju
Zadnja izmjena Označava kada je dokument posljednji put izmijenjen
Lokacija Trebao bi biti uključen u sve odgovore čiji statusni kod ima 300 kao statusni kod
Osvježiti Određuje kako pronaći ažuriranu stranicu.
Pokušaj ponovo nakon Može se koristiti s odgovorom 503 da se klijentu kaže koliko brzo može ponoviti zahtjev
Set-kolačić Određuje kolačić povezan sa stranicom

Metode zaglavlja HTTP odgovora u JSP-u

Slijede metode u JSP-u koje koriste objekt odgovora:

  1. String encodeRedirectURL(String URL) – kodira URL u metodi redirectURL.
  2. String encodeURL(string URL) – kodira URL uključivanjem ID-a sesije.
  3. Booleova vrijednost sadrži zaglavlje (naziv niza) – sadrži li zaglavlje u JSP-u ili ne.
  4. Booleov isCommited() – odgovor je uvršten ili ne.
  5. Void addCookie(Cookie cookie) – dodaje kolačić u odgovor
  6. Void addDateHeader(naziv niza, vrijednost niza) – dodaje ime i vrijednost datuma zaglavlja odgovora
  7. Void addHeader(naziv niza, vrijednost niza) – dodaje zaglavlje odgovora s imenom i vrijednošću
  8. Void addIntHeader(naziv niza,int vrijednost) – dodaje zaglavlje odgovora s imenom i cjelobrojnom vrijednošću
  9. Ispiranje praznineBuffer() - forsira sadržaj u međuspremniku na izlaz klijentu.
  10. Void reset() – briše podatke u međuspremniku.
  11. Poništavanje praznineBuffer - briše međuspremnik sadržaja u odgovoru bez brisanja statusnih kodova.
  12. Void sendError(intsc,Stringmsg) – klijentu šalje odgovor o pogrešci koristeći statusni kod.
  13. Void sendRedirect (lokacija niza) – šalje privremeni odgovor preusmjeravanja klijentu.
  14. Skup prazninaBufferVeličina (int veličina) – postavlja veličinu međuspremnika tijela
  15. Void setCharacterEncoding(String charset) – postavlja kodiranje znakova
  16. Void setContentType(vrsta niza) – postavlja vrstu sadržaja odgovora
  17. Void setContentLength(intlen) – postavlja duljinu sadržaja odgovora
  18. Void setLocale(Locale lcl) – postavlja vrstu lokalizacije odgovora
  19. Void setStatus(intsc) – postavlja statusni kod odgovora

Primjer:

U ovom primjeru pokrivamo različite 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>

Objašnjenje koda:

Redak koda 13: Korištenjem objekta odgovora dobivamo objekt lokalizacije ove JSP sesije

Redak koda 15: Korištenjem objekta odgovora, flushbuffer se koristi za prisiljavanje sadržaja međuspremnika u klijenta

Redak koda 16: Korištenjem objekta odgovora dobivamo objekt pisca koji dobiva izlaz u izlaznom toku

Kodna linija 18: Pomoću objekta odgovora dobivamo tip sadržaja tj. MIME tip objekta odgovora

Redak koda 21: Koristeći objekt odgovora, koristi se za automatsko učitavanje svakih 5 sekundi jer je 5 postavljeno kao drugi parametar

Kada izvršite gornji kod, dobit ćete sljedeći izlaz:

JSP odgovor poslužitelja

Izlaz:

  • Ovdje dobivamo izlaz jer je to iz objekta pisca iz getWriter-a, koji nam daje objekt i možemo ispisati u izlaznom toku.
  • Dobivamo lokalizaciju kao en_us i vrstu sadržaja kao text/html
  • Dobivamo skup znakova kao ISO 8859
  • Današnji datum kao trenutni datum.

JSP HTTP statusni kodovi

  • Kada se zahtjev obradi, generira se odgovor. Redak statusa odgovora sastoji se od HTTP verzije, statusnog koda i pridružene poruke.
  • Poruka je izravno povezana sa statusnim kodom i HTTP verzijom, a određuje ju poslužitelj.
  • Prema zadanim postavkama 200 je postavljeno kao statusni kod u JSP-u, tako da ne trebamo eksplicitno postavljati.
  • Možemo postaviti kao response.setStatus() metodu

Kodovi spadaju u sljedećih 5 kategorija:

  • 100-199 – Ovdje klijent pokazuje da bi trebao odgovoriti nekom radnjom
  • 200-299 – Označava da je zahtjev uspješan
  • 300-399 – Koriste se za datoteke koje su premještene i obično uključuju zaglavlje lokacije koje označava novu adresu
  • 400-499 – Označava grešku klijenta
  • 500-599 – Označava grešku poslužitelja

Neki od uobičajenih statusnih kodova su u nastavku:

  • 200 – Pokazuje da je sve u redu
  • 301 – Preselio se za stalno
  • 304 – Nije mijenjano od zadnje promjene
  • 400 – Loš zahtjev
  • 404 nije pronađeno
  • 405 – Metoda nije pronađena
  • 500 Interna pogreška poslužitelja
  • 503 usluga nedostupna
  • 505 – HTTP verzija nije podržana

Metode HTTP statusnog koda u JSP-u

Neke od metoda statusnog koda u JSP-u navedene su u nastavku:

  1. Javni void setStatus(intstatusCode): Postavlja statusni kod koji god želimo postaviti na toj JSP stranici. Ovo će nam dati poruku statusnog koda koji je postavljen
  2. Public void sendRedirect(String URL): Generira odgovor 302 zajedno sa zaglavljem lokacije dajući URL novog dokumenta
  3. Javni void sendError(intcode,Stringmsg): Šalje statusni kod zajedno s kratkom porukom i formatira se unutar HTML dokumenta.

Primjer:

U ovom primjeru izričito šaljemo pogrešku JSP stranici.

<%@ 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>

Objašnjenje koda:

Redak koda 10: Korištenjem objekta odgovora šaljemo grešku na stranicu s dva parametra.

  1. Statusni kod – može biti bilo koji od gore navedenog. U ovom smo slučaju opisali kao 404
  2. Poruka – To može biti bilo koja specifična poruka kojom želimo prikazati pogrešku

Ako izvršite gornji kod, dobit ćete sljedeći izlaz:

JSP HTTP statusni kodovi

Izlaz:

Ovdje dobivamo kod pogreške kao 404, koji je poslan iz koda i također prikazuje poruku "Guru Stranica nije pronađena" koja se vidi u izlazu.

Rezime

  • U ovom smo članku naučili o zahtjevu klijenta i odgovoru poslužitelja o tome kako se zahtjev presreće i kako se manipulira odgovorima.
  • JSP akcije koji koriste konstrukcije u XML sintaksi za kontrolu ponašanja servlet stroja.
  • Kada se zatraži web stranica, ona šalje informacije web poslužitelju u HTTP zaglavlju.
  • Kada se zahtjev obrađuje, a zatim se odgovor generira s web poslužitelja. Sastoji se od retka statusa, zaglavlja odgovora, praznog retka i dokumenta.
  • Kada se zahtjev obradi, generira se odgovor. Redak statusa odgovora sastoji se od HTTP verzije, statusnog koda i pridružene poruke.