Vodič za JavaServer stranice (JSP)

Sadržaj

  • 1. Pregled
  • 2. JavaServer stranice
  • 2.1. Sintaksa JSP-a
  • 2.2. Statički i dinamički sadržaj
  • 2.3. Implicitni objekti
  • 2.4. Ostali implicitni objekti
  • 2.5. Direktive
  • 2.6. Direktive o stranicama
  • 3.0. Tri primjera
  • 3.1. HTML prikazan u Servletu
  • 3.2. Java u JSP statičnom sadržaju
  • 3.3. JSP s prosljeđivanjem
  • 3.4. Isprobaj!
  • 4. Zaključak

1. Pregled

JavaServer Pages (JSP) dopušta dinamičan ubrizgavanje sadržaja u statički sadržaj koristeći Javu i Java Servlete. Možemo podnijeti zahtjev za a Java Servlet, izvodi relevantnu logiku i generira određeni prikaz na strani poslužitelja za upotrebu na strani klijenta. Ovaj će članak pružiti temeljit pregled JavaServer stranica koje koriste Java 8 i Jave 7 EE.

Započet ćemo s istraživanjem nekoliko ključnih pojmova relevantnih za JSP: naime, razlike između dinamičan i statički sadržaj, JSP životni ciklus i JSP sintaksa, kao i direktive i implicitni objekti stvoreni pri kompilaciji!

2. JavaServer stranice

JavaServer Pages (JSP) omogućile su prijenos podataka specifičnih za Java ili njihovo postavljanje u .jsp prikaz i trošenje na strani klijenta.

JSP datoteke su u osnovi .html datoteke s nešto dodatne sintakse i nekoliko manjih početnih razlika:

  1. the .html sufiks se zamjenjuje s .jsp (smatra se datotečnim tipom .jsp) i
  2. sljedeća oznaka dodaje se na vrh .html elemenata za označavanje:

Pređimo na neke od ključnih pojmova u JSP-u.

2.1. Sintaksa JSP-a

Postoje dva načina za dodavanje Java koda u .jsp. Prvo, možemo koristiti osnovnu sintaksu Java Scriptlet koja uključuje postavljanje blokova Java koda unutar dvije oznake Scriptlet:

<% Java code here %>

Druga metoda specifična je za XML:

 Java kôd ovdje 

Važno je da se pomoću JSP-a može koristiti uslovna logika na strani klijenta ako, zatim, i drugo klauzule, a zatim umotavanje relevantnih blokova označavanja u te zagrade.

 Doodad! 

Zdravo!

Na primjer, ako doodad je istina, prikazali bismo prvi, div element, inače bismo prikazali drugi, str element!

2.2. Statički i Dinamičan Sadržaj

Statički web sadržaji su osnovna sredstva koja se troše neovisno o zahtjevima RESTful, SOAP, HTTP, HTTPS ili drugim podacima koje je poslao korisnik.

Statički sadržaj je, međutim, fiksan i ne mijenja se korisničkim unosima. Dinamičan web sadržaj je ona imovina koja reagira na, mijenja se ili se mijenja u svjetlu korisničkih radnji ili informacija!

JSP tehnologija omogućuje čisto razdvajanje odgovornosti između dinamičan i statički sadržaj.

Poslužitelj (servlet) upravlja dinamičan sadržaja, a klijent (stvarna .jsp stranica) je statički kontekst u koji se ubrizgava dinamički sadržaj.

Pogledajmo implicitni objekti koje je kreirao JSP i koji vam omogućuju pristup na strani poslužitelja podataka relevantnih za JSP!

2.3. Implicitni objekti

Implicitni objekti generira JSP motor automatski tijekom kompilacija.

Implicitni objekti uključuju HttpRequest i HttpResponse objekte i izložiti razne funkcionalnosti na poslužitelju za upotrebu u vašem servletu i za interakciju s vašim .jsp! Evo popisa implicitni objekti koji su stvoreni:

zahtjev

zahtjev pripada klasi javax.servlet.http.HttpServletRequest. The zahtjev objekt izlaže sve unose podataka korisnika i čini ih dostupnima sa strane poslužitelja.

odgovor

odgovor pripada klasi javax.servlet.http.HttpServletResponse i određuje što se vraća klijentu nakon a zahtjev je izrađena.

Pogledajmo pobliže zahtjev i odgovor implicitni objekti jer su oni najvažniji i najčešće korišteni.

Primjer u nastavku pokazuje vrlo jednostavnu, nepotpunu, servlet metodu za obradu GET zahtjeva. Izostavio sam većinu pojedinosti kako bismo se mogli usredotočiti na to kako koristiti zahtjev i odgovor objekti:

zaštićeni void doGet (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca ServletException, IOException {String message = request.getParameter ("message"); response.setContentType ("text / html"); . . . }

Prvo, vidimo da zahtjev i odgovor objekti se predaju kao parametri u metodu čineći ih dostupnima unutar njenog opsega.

Možemo pristupiti parametrima zahtjeva pomoću .getParameter () funkcija. Iznad, uhvatimo poruka parametar i inicijalizira niz varijabli kako bismo je mogli koristiti u našoj logici na strani poslužitelja. Također možemo pristupiti odgovor objekt koji određuje koji će i kako biti podaci preneseni u prikaz.

Iznad smo na njega postavili vrstu sadržaja. Ne trebamo vratiti odgovor objekt da se njegov nosivost prikaže na JSP stranici pri prikazivanju!

van

van pripada klasi javax.servlet.jsp.JspWriter a koristi se za pisanje sadržaja klijentu.

Postoje najmanje dva načina ispisa na vašu JSP stranicu i o njima je vrijedno raspravljati ovdje. van automatski se stvara i omogućuje vam pisanje u memoriju, a zatim u odgovor objekt:

out.print ("zdravo"); out.println ("svijet");

To je to!

Drugi pristup može biti učinkovitiji jer vam omogućuje pisanje izravno u odgovor objekt! Evo, koristimo PrintWriter:

PrintWriter out = response.getWriter (); out.println ("Pozdrav svijetu");

2.4. Ostali implicitni objekti

Evo još nekih Implicitni objekti to je također dobro znati!

sjednica

sjednica pripada klasi javax.servlet.http.HttpSession održava korisničke podatke za vrijeme trajanja sesije.

primjena

primjena pripada klasi javax.servlet.ServletContext pohranjuje parametre za cijelu aplikaciju postavljene pri inicijalizaciji ili kojima treba pristupiti za cijelu aplikaciju.

iznimka

iznimka pripada klasi javax.servlet.jsp.JspException koristi se za prikaz poruka o pogreškama na JSP stranicama koje imaju oznaku .

stranica

stranica pripada klasi java.lang.Object omogućuje pristup ili upućivanje na trenutne informacije servleta.

pageContext

pageContext pripada klasi javax.servlet.jsp.PageContext zadane vrijednosti stranica opseg, ali se može koristiti za pristup zahtjev, primjena, i atributi sesije.

konfiguracija

konfiguracija pripada klasi javax.servlet.ServletConfig je objekt konfiguracije servleta koji omogućuje dobivanje konteksta, imena i konfiguracijskih parametara servleta.

Sad kad smo pokrili implicitni objekti koje pruža JSP, obratimo se direktive koje omogućuju .jsp stranicama (neizravno) pristup nekim od tih objekata.

2.5. Direktive

JSP isporučuje direktive koje se mogu upotrijebiti za specificiranje osnovnih funkcionalnosti naših JSP datoteka. Dva su dijela JSP direktiva: (1) sama direktiva i (2) atribut te direktive kojoj je dodijeljena vrijednost.

Tri su vrste direktiva na koje se može uputiti pomoću oznaka direktiva koji definira ovisnosti i atribute JSP-a uključujući vrsta sadržaja i Jezik, koji navodi uvoz ili datoteku koja će se koristiti, i koja navodi biblioteku oznaka koja definira prilagođene radnje koje će stranica koristiti.

Dakle, kao primjer, direktiva stranice bila bi navedena pomoću JSP oznaka na sljedeći način:

A to možemo učiniti pomoću XML-a na sljedeći način:

2.6. Atributi direktive o stranici

Postoji puno atributa koji se mogu deklarirati unutar direktive stranice:

automatsko ispiranje

automatsko ispiranje kontrolira izlaz me uspremnika, brišući ga kad se postigne veličina međuspremnika. Zadana vrijednost je pravi.

pufer

pufer postavlja veličinu međuspremnika koji koristi naša JSP stranica. Zadana vrijednost je 8kb.

errorPage

errorPage određuje JSP stranicu kao stranicu pogreške.

proteže se

proteže se određuje super klasu odgovarajućeg servlet koda.

info

info koristi se za postavljanje tekstualnog opisa za JSP.

isELIgnored

isELIgnored navodi hoće li stranicu ignorirati ili ne Jezik izraza (EL) u JSP-u. EL omogućuje prezentacijskom sloju komunikaciju s gravom kojim upravlja Java i čini to pomoću ${…} sintaksa i premda ovdje nećemo ulaziti u glatkoću EL, u nastavku je pronađeno nekoliko primjera koji su dovoljni za izgradnju naše primjera JSP aplikacije! Zadana vrijednost za isELIgnored je lažno.

isErrorPage

isErrorPage kaže je li stranica stranica s pogreškom. Moramo odrediti stranicu s pogreškom ako za aplikaciju stvorimo obrađivač pogrešaka za našu stranicu.

isThreadSafe

isThreadSafe ima zadanu vrijednost pravi. isThreadSafe određuje može li JSP koristiti Servlet multi-threading. Općenito, nikad ne biste željeli

da isključite tu funkcionalnost.

Jezik

Jezik određuje koji skriptni jezik koristiti u JSP-u. Zadana vrijednost je Java.

sjednica

sjednica određuje hoće li se HTTP sesija održavati ili ne. Zadana vrijednost je true i prihvaća vrijednosti pravi ili lažno.

trimDirectiveWhitespaces

trimDirectiveWhitespaces uklanja prazne prostore na JSP stranici sažimajući kôd u kompaktniji blok u vrijeme prevođenja. Postavljanje ove vrijednosti na pravi može pomoći u smanjenju veličine JSP koda. Zadana vrijednost je lažno.

3. Tri primjera

Sad kad smo pregledali ključne koncepte JSP-a, primijenimo ih na neke osnovne primjere koji će vam pomoći da pokrenete i pokrenete svoj prvi servlet koji poslužuje JSP!

Tri su glavna načina za ubrizgavanje Jave u .jsp, a svaki od tih načina istražit ćemo u nastavku koristeći matične funkcionalnosti u Java 8 i Jakarta EE.

Prvo ćemo prikazati našu stranu za označavanje na strani klijenta. Drugo, razmotrit ćemo kako dodati Java kôd izravno u našu .jsp datoteku neovisno o javax.servlet.http‘S zahtjev i odgovor predmeta.

Treće, pokazat ćemo kako oboje proslijediti HttpServletRequest na određeni .jsp i na njega vežite Java obrađenu na strani poslužitelja.

Postavimo svoj projekt u Eclipse koristeći Datoteka / Novo / Projekt / Web / Dinamički web projekt / tip za hostiranje u Tomcat-u! Nakon izrade projekta trebali biste vidjeti:

| -project | - WebContent | - META-INF | - MANIFEST.MF | - WEB-INF | - lib | - src

Dodati ćemo nekoliko datoteka u strukturu aplikacije kako bismo na kraju dobili:

| -project | - WebContent | - META-INF | - MANIFEST.MF | - WEB-INF | -lib * -web.xml | - ExampleTree.jsp | - ExampleTwo.jsp * - index.jsp | - src | - com | - baeldung * - ExampleOne.java * - ExampleThree.java

Postavimo index.jsp koji će se prikazati kada pristupimo kontekstu URL-a u Tomcat 8:

   JSP primjeri 

Pozovite HTML koji je izvršio Servlet: ovdje

Java na statičkoj stranici: ovdje

Java koju je ubrizgao Servlet: ovdje

Postoje tri a, svaki koji vodi do jednog od primjera koje ćemo proći u nastavku u odjeljcima 4.1 do 4.4.

Također moramo biti sigurni da imamo svoje web.xml postaviti:

 index.html index.htm index.jsp ExampleOne com.baeldung.ExampleOne ExampleOne / ExampleOne 

Glavna je napomena ovdje - kako pravilno mapirati svaki naš servlet na određeno mapiranje servleta. Na taj način svaki servlet povezuje s određenom krajnjom točkom na kojoj se može potrošiti! Sada ćemo pregledati svaku od ostalih datoteka u nastavku!

3.1. HTML prikazan u Servletu

U ovom ćemo primjeru zapravo preskočiti izgradnju .jsp datoteke!

Umjesto toga, stvorit ćemo niz naših oznaka u nizu, a zatim ga zapisati u GET odgovor s PrintWriter nakon što ExampleOne Servlet primi GET zahtjev:

javna klasa ExampleOne proširuje HttpServlet {@Override zaštićen void doGet (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca ServletException, IOException {response.setContentType ("text / html"); PrintWriter out = response.getWriter (); out.println ("" + "" + "" + "HTML prikazao servlet" + "" + "" + "
" + "

Ovu je stranicu prikazao ExampleOne Servlet!

" + "" + "" ); } }

Ono što ovdje radimo je ubrizgavanje oznake putem izravnog rukovanja našim zahtjevima za servlet. Umjesto JSP oznake, generiramo naš HTML, zajedno sa svim i svim specifičnim podacima koji se ubacuju za Java, isključivo na strani poslužitelja bez statičnog JSP-a!

Ranije smo pregledali van objekt koji je obilježje JspWriter.

Iznad sam koristio PrintWriter umjesto toga koji piše izravno u odgovor objekt.

JspWriter zapravo baferuje niz koji se zapisuje u memoriju, a zatim zapisuje u odgovor objekata nakon što se međuspremnik u memoriji ispere.

PrintWriter već je priključen na odgovor objekt. Radije pišem izravno na odgovor iz gornjih i donjih primjera iz tih razloga.

3.2. Java u JSP statičnom sadržaju

Ovdje stvaramo JSP datoteku s imenom ExampleTwo.jsp s JSP oznakom. Kao što se vidi gore, ovo omogućuje dodavanje Jave izravno u našu oznaku. Ovdje nasumično ispisujemo element a Niz[]:

   Primjer Java u statičkoj stranici 

Iznad ćete vidjeti tu deklaraciju varijable unutar objekata JSP oznaka: tipvarijabilnoName i an inicijalizacija baš kao i uobičajena Java.

Uključio sam gornji primjer da pokažem kako dodati Javu na statičku stranicu bez pribjegavanja određenom servletu. Ovdje se Java jednostavno dodaje na stranicu, a za ostalo brine JSP životni ciklus.

3.3. JSP s prosljeđivanjem

Sada, za naš posljednji i najopsežniji primjer! Ovdje ćemo koristiti @WebServlet napomena na ExampleThree koja eliminira potrebu za preslikavanjima servleta u poslužitelj.xml.

@WebServlet (name = "ExampleThree", opis = "JSP servlet s primjedbama", urlPatterns = { "/ ExampleThree"}) public class ExampleThree proteže HttpServlet {@Override zaštićena void doGet (HttpServletRequest zahtjev, HttpServletResponse odgovora) baca ServletException, IOException { Niz poruke = request.getParameter ("poruka"); request.setAttribute ("tekst", poruka); request.getRequestDispatcher ("/ ExampleThree.jsp"). forward (zahtjev, odgovor); }}

ExampleThree uzima parametar URL-a prosljeđen kao poruka, veže taj parametar na zahtjev objekt, a zatim ga preusmjerava zahtjev prigovoriti ExampleThree.jsp.

Dakle, nismo postigli samo istinsko dinamički web iskustvo, ali to smo učinili i u aplikaciji koja sadrži više datoteka .jsp.

getRequestDispatcher (). forward () je jednostavan način da se osigura da se prikaže ispravna .jsp stranica.

Svi podaci vezani za zahtjev Tada će se prikazati objekt poslan (.jsp datoteka)! Evo kako postupamo s posljednjim dijelom:

   Primjer vezivanja Java 

Rekli ste: $ {text}

Obratite pažnju na JSP oznaku dodanu na vrh ExampleThree.jsp. Primijetit ćete da sam ovdje zamijenio JSP oznake. Koristim jezik izraza (koji sam već spomenuo) za generiranje našeg postavljenog parametra (koji je vezan kao $ {text})!

3.4. Isprobaj!

Sada ćemo izvesti našu aplikaciju u .war koji će biti pokrenut i hostiran u Tomcat 8! Nađi svoj poslužitelj.xml a mi ćemo ažurirati naš Kontekst do:

Što će nam omogućiti pristup našim servletima i uključenim JSP-ovima localhost: 8080 / spring-mvc-xml / jsp / index.jsp! Preuzmite radnu kopiju na: GitHub. Čestitamo!

4. Zaključak

Pokrili smo poprilično tla! Saznali smo što su JavaServer stranice, što su uvedene da bi postigle, njihov životni ciklus, kako ih stvoriti i na kraju nekoliko različitih načina za njihovu primjenu!

Ovim je završen uvod u JSP! Budite dobro i kodirajte!