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.