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:
- Kolačić[] getCookies() – vraća niz koji sadrži objekte kolačića koje je klijent poslao
- Nabrajanje getAttributeNames() – sadrži popis imena atributa za zahtjev
- Nabrajanje getHeaderNames() – sadrži nabrajanje imena zaglavlja.
- Nabrajanje getParameterNames() – sadrži nabrajanje naziva parametara dobivanja u zahtjevu.
- HttpSessiongetSession() – vraća trenutnu sesiju povezanu sa zahtjevom ili ako nema sesiju, stvorit će novu.
- 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.
- Objekt getAttribute(naziv niza) – vraća vrijednost imenovanog atributa kao objekt.
- ServletInputStreamgetInputStream() – dohvaća tijelo zahtjeva kao binarne podatke.
- String getAuthType() – vraća naziv sheme provjere autentičnosti za zaštitu servleta
- String getCharacterEncoding() – vraća naziv kodiranja znakova korištenog u tijelu zahtjeva.
- String getContentType() – vraća MIME tip tijela zahtjeva.
- String getContextPath() – vraća dio zahtjeva URI označava putanju konteksta URI-ja
- String getHeader (naziv niza) – vraća zaglavlje zahtjeva kao niz
- String getMethod() – vraća naziv HTTP metode poput GET, POST
- String getParameter(naziv niza) – vraća parametar zahtjeva kao niz.
- String getPathInfo() – vraća informacije o putu povezane s URL-om
- String getQueryString() – vraća niz upita koji je povezan s URL-om zahtjeva
- String getServletPath() – vraća dio URL-ova zahtjeva koji poziva JSP
- 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:
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:
- String encodeRedirectURL(String URL) – kodira URL u metodi redirectURL.
- String encodeURL(string URL) – kodira URL uključivanjem ID-a sesije.
- Booleova vrijednost sadrži zaglavlje (naziv niza) – sadrži li zaglavlje u JSP-u ili ne.
- Booleov isCommited() – odgovor je uvršten ili ne.
- Void addCookie(Cookie cookie) – dodaje kolačić u odgovor
- Void addDateHeader(naziv niza, vrijednost niza) – dodaje ime i vrijednost datuma zaglavlja odgovora
- Void addHeader(naziv niza, vrijednost niza) – dodaje zaglavlje odgovora s imenom i vrijednošću
- Void addIntHeader(naziv niza,int vrijednost) – dodaje zaglavlje odgovora s imenom i cjelobrojnom vrijednošću
- Ispiranje praznineBuffer() - forsira sadržaj u međuspremniku na izlaz klijentu.
- Void reset() – briše podatke u međuspremniku.
- Poništavanje praznineBuffer - briše međuspremnik sadržaja u odgovoru bez brisanja statusnih kodova.
- Void sendError(intsc,Stringmsg) – klijentu šalje odgovor o pogrešci koristeći statusni kod.
- Void sendRedirect (lokacija niza) – šalje privremeni odgovor preusmjeravanja klijentu.
- Skup prazninaBufferVeličina (int veličina) – postavlja veličinu međuspremnika tijela
- Void setCharacterEncoding(String charset) – postavlja kodiranje znakova
- Void setContentType(vrsta niza) – postavlja vrstu sadržaja odgovora
- Void setContentLength(intlen) – postavlja duljinu sadržaja odgovora
- Void setLocale(Locale lcl) – postavlja vrstu lokalizacije odgovora
- 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:
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:
- 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
- Public void sendRedirect(String URL): Generira odgovor 302 zajedno sa zaglavljem lokacije dajući URL novog dokumenta
- 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.
- Statusni kod – može biti bilo koji od gore navedenog. U ovom smo slučaju opisali kao 404
- 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:
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.



