Zahtjev JSP klijenta, odgovor poslužitelja & HTTP kodovi statusa

Sadržaj:

Anonim

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:

  1. Cookie [] getCookies () - vraća niz koji sadrži objekte kolačića koje je klijent poslao
  2. Enumeracija getAttributeNames () - sadrži nabrajanje imena atributa za zahtjev
  3. Enumeration getHeaderNames () - sadrži nabrajanje imena zaglavlja.
  4. Enumeration getParameterNames () - sadrži nabrajanje dobivanja imena parametara u zahtjevu.
  5. HttpSessiongetSession () - vraća trenutnu sesiju povezanu sa zahtjevom ili ako nema sesiju, stvorit će novu.
  6. 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.
  7. Object getAttribute (String name) - vraća vrijednost imenovanog atributa kao objekta.
  8. ServletInputStreamgetInputStream () - dohvaća tijelo zahtjeva kao binarne podatke.
  9. String getAuthType () - vraća ime sheme provjere autentičnosti za zaštitu servleta
  10. String getCharacterEncoding () - vraća ime kodiranja znakova korištenog u tijelu zahtjeva.
  11. String getContentType () - vraća MIME vrstu tijela zahtjeva.
  12. String getContextPath () - vraća dio URI zahtjeva koji ukazuje na stazu konteksta URI-ja
  13. String getHeader (naziv niza) - vraća zaglavlje zahtjeva kao niz
  14. String getMethod () - vraća ime 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 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

zaglavlje gurua zaglavlje gurua Vrijednost (i) <%HttpSession gurusession = request.getSession ();out.print (" Naziv sesije je " + gurusession + " ");Lokale gurulocale = request.getLocale ();out.print (" Naziv lokaliteta je " + gurulocale + " ");Put niza = request.getPathInfo ();out.print (" Naziv puta je " + path + " ");Niz lpath = request.get ();out.print (" Put konteksta je " + lipath + " ");Niz poslužiteljskog imena = request.getServerName ();out.print (" Ime poslužitelja je " + ime poslužitelja + " ");int portname = request.getServerPort ();out.print (" Port poslužitelja je " + naziv porta + " ");Nabrajanje hnames = request.getHeaderNames ();while (hnames.hasMoreElements ()) {Niz paramName = (Niz) hnames.nextElement ();out.print (" " + 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:

  1. String encodeRedirectURL (URL niza) - kodira URL u metodi redirectURL.
  2. String encodeURL (String URL) - kodira URL uključivanjem ID-a sesije.
  3. Boolean containsHeader (naziv niza) - sadrži zaglavlje u JSP-u ili ne.
  4. Boolean isCommited () - odgovor je predan ili nije.
  5. Void addCookie (kolačić kolačića) - dodaje kolačić odgovoru
  6. Void addDateHeader (naziv niza, vrijednost niza) - dodaje naziv i vrijednost zaglavlja odgovora
  7. Void addHeader (ime niza, vrijednost niza) - dodaje zaglavlje odgovora s imenom i vrijednošću
  8. Void addIntHeader (Ime niza, vrijednost int) - dodaje zaglavlje odgovora s imenom i cijelom vrijednošću
  9. Void flushBuffer () - prisiljava sadržaj u međuspremniku na izlaz za klijenta.
  10. Poništavanje praznine () - briše podatke u međuspremniku.
  11. Void resetBuffer - briše međuspremnik sadržaja u odgovoru bez brisanja statusnih kodova.
  12. Void sendError (intsc, Stringmsg) - klijentu šalje odgovor na pogrešku pomoću statusnog koda.
  13. Void sendRedirect (lokacija niza) - šalje privremeni odgovor preusmjeravanja klijentu.
  14. Void setBufferSize (int size) - postavlja veličinu međuspremnika tijela
  15. Void setCharacterEncoding (niz znakova) - 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 lokalnu vrstu 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. *"%> 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:

  1. 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

  2. Javna void sendRedirect (URL niza)

    Generira 302 odgovora zajedno sa zaglavljem lokacije koji daje URL novog dokumenta

  3. 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.

  1. Statusni kôd - može biti bilo koji od gore navedenih. U ovom smo slučaju opisali kao 404
  2. 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.