JSP akcije koje koriste konstrukte u XML sintaksi za kontrolu ponašanja servlet motora. Detaljnije ćemo naučiti o raznim elementima JSP akcije poput zahtjeva klijenta, odgovora poslužitelja, HTTP kodova statusa.
U ovom vodiču naučit ćete-
- Zahtjev JSP klijenta
- Odgovor JSP poslužitelja
- JSP HTTP kodovi statusa
Zahtjev JSP klijenta
- Kada se zatraži web-stranica, ona šalje informacije web-poslužitelju u HTTP zaglavlju.
- Te podatke možemo koristiti pomoću HTTPServletRequest objekta.
- Podaci koje preglednik šalje pohranjuju se u zaglavlju zahtjeva HTTP zahtjeva.
- Koristimo različita zaglavlja za slanje podataka na objekt zahtjeva.
U nastavku su opisana različita zaglavlja:
Zaglavlje | Opis | Primjer |
---|---|---|
Prihvatiti | Određuje MIME vrste s kojima preglednik ili drugi klijenti mogu raditi | Slika / png ili slika / jpeg.webp |
Prihvati-charset | Za prikaz informacija koristi se skup znakova koji se koristi u pregledniku | ISO-8859-1 |
Prihvati- kodiranje | Određuje vrstu kodiranja kojim upravlja preglednik | Gzip ili oblog |
Prihvaćam jezik | Određuje jezik koji određuje klijent | En, en_us |
Odobrenje | Zaglavlje koje koriste klijenti prilikom pokušaja pristupa web stranicama zaštićenim lozinkom | |
Veza | Označava može li klijent obraditi trajne HTTP veze (preglednik može dohvatiti više datoteka) | Držati na životu |
Duljina sadržaja | Primjenjivo na zahtjeve za objavljivanje. Daje veličinu poštanskih podataka bajtova | |
Kolačić | Vraća kolačić na poslužitelj (onaj koji je prethodno poslan u preglednik) | |
Domaćin | Određuje host i port izvornog URL-a | |
Ako se promijeni od | Označava da zahtijeva samo stranicu ako je promijenjena ili izmijenjena | |
Ako je izmijenjeno od | Označava da stranica zahtijeva samo ako nije promijenjena ili izmijenjena | |
Preporučitelj | Označava URL referentne URL stranice | |
Korisnički agent | Identificira preglednik ili klijent koji podnosi zahtjev |
Za čitanje HTTP zaglavlja na JSP stranici koriste se sljedeće metode:
- Cookie [] getCookies () - vraća niz koji sadrži objekte kolačića koje je klijent poslao
- Enumeracija getAttributeNames () - sadrži nabrajanje imena atributa za zahtjev
- Enumeration getHeaderNames () - sadrži nabrajanje imena zaglavlja.
- Enumeration getParameterNames () - sadrži nabrajanje dobivanja imena parametara u zahtjevu.
- HttpSessiongetSession () - vraća trenutnu sesiju povezanu sa zahtjevom ili ako nema sesiju, stvorit će novu.
- Locale getLocale () - vraća preferirani jezik u kojem će klijent prihvatiti sadržaj. Dodijeljen je odgovoru. Prema zadanim postavkama vrijednost će biti zadana lokalizacija poslužitelja.
- Object getAttribute (String name) - vraća vrijednost imenovanog atributa kao objekta.
- ServletInputStreamgetInputStream () - dohvaća tijelo zahtjeva kao binarne podatke.
- String getAuthType () - vraća ime sheme provjere autentičnosti za zaštitu servleta
- String getCharacterEncoding () - vraća ime kodiranja znakova korištenog u tijelu zahtjeva.
- String getContentType () - vraća MIME vrstu tijela zahtjeva.
- String getContextPath () - vraća dio URI zahtjeva koji ukazuje na stazu konteksta URI-ja
- String getHeader (naziv niza) - vraća zaglavlje zahtjeva kao niz
- String getMethod () - vraća ime 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 parametar zahtjeva ima
Primjer:
U donjem primjeru koristimo različite metode koristeći objekt zahtjeva
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. * java.util. *"%>Zahtjev klijenta Guru JSP Guru JSP zahtjeva klijenta
<%HttpSession gurusession = request.getSession ();out.print (" zaglavlje gurua zaglavlje gurua Vrijednost (i) ");Lokale gurulocale = request.getLocale ();out.print (" Naziv sesije je " + gurusession + " td.> ");Put niza = request.getPathInfo ();out.print (" Naziv lokaliteta je " + gurulocale + " ");Niz lpath = request.get ();out.print (" Naziv puta je " + path + " ");Niz poslužiteljskog imena = request.getServerName ();out.print (" Put konteksta je " + lipath + " ");int portname = request.getServerPort ();out.print (" Ime poslužitelja je " + ime poslužitelja + " ");Nabrajanje hnames = request.getHeaderNames ();while (hnames.hasMoreElements ()) {Niz paramName = (Niz) hnames.nextElement ();out.print (" Port poslužitelja je " + naziv porta + " ");}%> " + paramName + " ");Niz paramValue = request.getHeader (paramName);out.println ("" + paramValue + "
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 i.een_US lokalno za taj JSP.
Linija koda 21: Koristeći objekt zahtjeva, dobivamo informacije o putu za taj JSP. U ovom je slučaju null jer ne postoji put za spomenuti URL.
Linija koda 23: Korištenjem objekta zahtjeva dobivamo stazu 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 imena zaglavlja koja se pojavljuju kao nabrajanje, a time dobivamo sve vrijednosti zaglavlja u imenima zaglavlja.
U tome dobivamo sve vrijednosti zaglavlja kao kolačić, host, vezu, prihvaćamo jezik, prihvaćamo kodiranje.
Kada izvršite gornji kod, dobit ćete sljedeći izlaz:
Izlaz :
Dobivamo niz vrijednosti kao što su naziv sesije, naziv lokaliteta, naziv puta, naziv poslužitelja, naziv porta, host, kontekst staza i sve vrijednosti zaglavlja tog JSP-a.
Odgovor JSP poslužitelja
- Kada se zahtjev obradi, a zatim se odgovor generira s web poslužitelja. Sastoji se od statusne linije, zaglavlja odgovora, praznog retka i dokumenta.
- To je objekt HTTPServletResponseclass, koji je objekt odgovora.
- Redak stanja verzija je HTML-a.
Zaglavlja odgovora navedena su u nastavku:
Zaglavlje | Opis |
---|---|
Dopustite | Određuje metode zahtjeva poput GET, POST koje poslužitelj traži |
Kontrola predmemorije | Dokument odgovora može se predmemorirati. Može biti javna, privatna i bez predmemorije. Nijedna predmemorija ne navodi da se dokument ne smije predmemorirati |
Veza | Upućuje treba li preglednik koristiti spremljene HTTPKonnekcije ili ne. Vrijednost "Zatvori" predstavlja da preglednik ne bi smio upotrebljavati trajno u HTTPConnections, a "držati-živ" znači korištenje trajnih veza |
Sadržaj-dispozicija | Da biste pitali korisnika hoće li odgovor spremiti na disk ili ne |
Kodiranje sadržaja | Stranica se mora kodirati tijekom prijenosa |
Duljina sadržaja | Broj bajtova u odgovoru |
Vrsta sadržaja | Određuje MIME vrstu odgovora |
Istječe | Određuje do kada se sadržaj treba smatrati zastarjelim i ne smije se čuvati u predmemoriji |
Zadnja promjena | Označava kada je dokument zadnji put izmijenjen |
Mjesto | Treba ga uključiti u sve odgovore koji imaju statusni kôd, a 300 ima statusni kôd |
Osvježiti | Određuje kako pronaći ažuriranu stranicu. |
Pokušaj ponovo | Može se koristiti s odgovorom 503 kako bi klijentu rekao koliko brzo može ponoviti zahtjev |
Set-kolačić | Određuje kolačić povezan sa stranicom |
Slijede metode koje koriste objekt odgovora:
- String encodeRedirectURL (URL niza) - kodira URL u metodi redirectURL.
- String encodeURL (String URL) - kodira URL uključivanjem ID-a sesije.
- Boolean containsHeader (naziv niza) - sadrži zaglavlje u JSP-u ili ne.
- Boolean isCommited () - odgovor je predan ili nije.
- Void addCookie (kolačić kolačića) - dodaje kolačić odgovoru
- Void addDateHeader (naziv niza, vrijednost niza) - dodaje naziv i vrijednost zaglavlja odgovora
- Void addHeader (ime niza, vrijednost niza) - dodaje zaglavlje odgovora s imenom i vrijednošću
- Void addIntHeader (Ime niza, vrijednost int) - dodaje zaglavlje odgovora s imenom i cijelom vrijednošću
- Void flushBuffer () - prisiljava sadržaj u međuspremniku na izlaz za klijenta.
- Poništavanje praznine () - briše podatke u međuspremniku.
- Void resetBuffer - briše međuspremnik sadržaja u odgovoru bez brisanja statusnih kodova.
- Void sendError (intsc, Stringmsg) - klijentu šalje odgovor na pogrešku pomoću statusnog koda.
- Void sendRedirect (lokacija niza) - šalje privremeni odgovor preusmjeravanja klijentu.
- Void setBufferSize (int size) - postavlja veličinu međuspremnika tijela
- Void setCharacterEncoding (niz znakova) - 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 lokalnu vrstu 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. *"%>Guruov akcijski odgovor Guruov odgovor
<%Locale lcl = response.getLocale ();out.println ("Lokalno je: + lcl + "\ n");response.flushBuffer ();PrintWriter output = response.getWriter ();output.println ("Ovo je iz objekta pisanja");Vrsta niza = response.getContentType ();out.println ("Vrsta sadržaja: + tip + "\ n");// Postavite osvježavanje, vrijeme automatskog učitavanja na 5 sekundiresponse.setIntHeader ("Osvježi", 5);// Dobivanje trenutnog vremenaDatum dt = novi datum ();out.println ("Današnji datum je: + dt.toString () + "\ n");%>
Objašnjenje koda:
Redak koda 13: Korištenjem objekta odgovora dobivamo lokalni jezik ove JSP sesije
Redak koda 15: Koristeći objekt odgovora, flushbuffer se koristi za prisiljavanje sadržaja međuspremnika u klijenta
Redak koda 16: Korištenjem objekta odgovora dobivamo objekt zapisivanja koji dobiva izlaz u izlaznom toku
Linija koda18: Korištenjem objekta odgovora dobivamo tip sadržaja, tj. MIME tip objekta odgovora
Linija 21: Korištenje objekta odgovora koristi se za automatsko učitavanje u 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 ovo iz objekta zapisivanja iz getWriter, koji nam daje objekt i možemo izlaz u izlaznom toku.
- Lokale dobivamo kao en_us, a vrstu sadržaja kao text / html
- Dobivamo charset kao ISO 8859
- Današnji datum kao trenutni datum.
JSP HTTP kodovi statusa
- 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 je poslužitelj.
- Prema zadanim je postavkama 200 postavljeno kao statusni kôd u JSP-u, tako da ne moramo eksplicitno postavljati.
- Možemo postaviti kao metodu response.setStatus ()
Kodovi spadaju u sljedećih 5 kategorija:
- 100-199 - Ovdje klijent naznačuje da bi trebao odgovoriti nekom akcijom
- 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 pogrešku poslužitelja
U nastavku su navedeni neki od uobičajenih statusnih kodova:
- 200 - Označava da je sve u redu
- 301 - Kretao se trajno
- 304 - Nije promijenjeno od posljednje 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
Neke od njegovih metoda navedene su u nastavku:
- Javna praznina setStatus (intstatusCode)
Postavlja statusni kod koji god želimo postaviti na toj JSP stranici. To će nam dati poruku statusnog koda koji je postavljen
- Javna void sendRedirect (URL niza)
Generira 302 odgovora zajedno sa zaglavljem lokacije koji daje URL novog dokumenta
- Javna void sendError (intcode, Stringmsg)
Šalje statusni kôd zajedno s kratkom porukom i formatiran je u HTML dokumentu.
Primjer:
U ovom primjeru šaljemo pogrešku na JSP stranicu izričito.
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%>Guru statusni kod <% response.sendError (404, "Guru stranica nije pronađena"); %>
Objašnjenje koda:
Redak 10: Korištenjem objekta odgovora šaljemo pogrešku na stranicu s dva parametra.
- Statusni kôd - može biti bilo koji od gore navedenih. U ovom smo slučaju opisali kao 404
- Poruka - To može biti bilo koja određena poruka kojom želimo prikazati pogrešku
Ako izvršite gornji kod, dobit ćete sljedeći izlaz:
Izlaz:
Ovdje dobivamo kôd pogreške kao 404, koji je poslan iz koda, a također prikazuje poruku "Guru Stranica nije pronađena" koja se vidi u izlazu.
Sažetak:
- U ovom smo članku saznali o zahtjevu klijenta i odgovoru poslužitelja o tome kako se presreće zahtjev i kako se manipulira odgovorima.
- Također, naučili smo o HTTP kodovima statusa kako bi se prikazali kodovi pogrešaka ili kodovi uspjeha za određenu datoteku.