Sprievodca stránkami JavaServer (JSP)

Obsah

  • 1. Prehľad
  • 2. Stránky JavaServera
  • 2.1. Syntax JSP
  • 2.2. Statický a dynamický obsah
  • 2.3. Implicitné objekty
  • 2.4. Ostatné implicitné objekty
  • 2.5. Smernice
  • 2.6. Smernice o stránkach
  • 3.0. Tri príklady
  • 3.1. HTML vykreslené v servlete
  • 3.2. Java v statickom obsahu JSP
  • 3.3. JSP s preposielaním
  • 3.4. Vyskúšaj to!
  • 4. Záver

1. Prehľad

Stránky JavaServer Pages (JSP) umožňujú dynamický vstrekovanie obsahu do statický obsah pomocou Java a Java Servlets. Môžeme podať žiadosť na a Servlet Java, vykonajte príslušnú logiku a vykreslite konkrétne zobrazenie na strane servera, ktoré sa spotrebuje na strane klienta. Tento článok poskytne komplexný prehľad stránok JavaServer používajúcich Java 8 a Jave 7 EE.

Začneme preskúmaním niekoľkých kľúčových pojmov dôležitých pre JSP: konkrétne rozdielov medzi dynamický a statický obsah, životný cyklus JSP a syntax JSP, ako aj smernice a implicitné objekty vytvorené pri kompilácii!

2. Stránky JavaServera

Stránky JavaServer Pages (JSP) umožnili, aby sa údaje špecifické pre Javu preniesli alebo umiestnili do zobrazenia .jsp a spotrebovali na strane klienta.

Súbory JSP sú v podstate súbory .html s nejakou extra syntaxou a niekoľkými menšími počiatočnými rozdielmi:

  1. the .html prípona je nahradená .jsp (považuje sa to za typ súboru .jsp) a
  2. nasledujúca značka sa pridáva na začiatok prvkov značkovania .html:

Prejdime si niektoré kľúčové pojmy v JSP.

2.1. Syntax JSP

Existujú dva spôsoby, ako pridať kód Java do súboru .jsp. Najprv môžeme použiť základnú syntax jazyka Java Scriptlet, ktorá spočíva v umiestnení blokov kódu Java do dvoch značiek Scriptlet:

<% Java code here %>

Druhá metóda je špecifická pre XML:

 Java kód tu 

Dôležité je, že pomocou JSP je možné použiť podmienenú logiku na strane klienta s JSP ak, potoma inak doložky a potom zalomenie príslušných blokov značiek týmito zátvorkami.

 Doodad! 

Ahoj!

Napríklad ak doodad je pravda, zobrazili by sme prvý, div inak by sme zobrazili druhý, p element!

2.2. Statický a Dynamický Obsah

Statický webový obsah sú stále aktíva, ktoré sa spotrebúvajú nezávisle od požiadaviek RESTful, SOAP, HTTP, HTTPS alebo iných informácií poskytnutých používateľom.

Statický obsah je však pevný a nemení sa podľa vstupov používateľa. Dynamický webový obsah sú tie aktíva, ktoré reagujú, sú upravované alebo sa menia na základe akcií alebo informácií používateľa!

Technológia JSP umožňuje čisté rozdelenie zodpovedností medzi dynamický a statický obsah.

Server (servlet) spravuje server dynamický obsah a klient (skutočná stránka .jsp) je statický kontext, do ktorého sa vkladá dynamický obsah.

Poďme sa pozrieť na implicitné objekty ktoré sú vytvorené JSP a ktoré vám umožňujú prístup k údajovým serverom na strane JSP!

2.3. Implicitné objekty

Implicitné objekty sú generované motorom JSP automaticky počas kompilácia.

Implicitné objekty zahrnúť HttpRequest a HttpResponse objekty a vystaviť rôzne funkcie servera na použitie vo vašom servlete a na interakciu s vaším .jsp! Tu je zoznam implicitné objekty ktoré sú vytvorené:

žiadosť

žiadosť patrí do triedy javax.servlet.http.HttpServletRequest. The žiadosť objekt sprístupňuje všetky vstupné údaje používateľa a sprístupňuje ho na strane servera.

odpoveď

odpoveď patrí do triedy javax.servlet.http.HttpServletResponse a určuje, čo sa odovzdá späť klientovi po a žiadosť je vyrobené.

Poďme sa bližšie pozrieť na žiadosť a odpoveď implicitné objekty, pretože sú to tie najdôležitejšie a najviac používané.

Nasledujúci príklad demonštruje veľmi jednoduchú, neúplnú metódu servletu na spracovanie požiadaviek GET. Vynechal som väčšinu podrobností, aby sme sa mohli sústrediť na to, ako používať žiadosť a odpoveď objekty:

protected void doGet (požiadavka HttpServletRequest, odpoveď HttpServletResponse) vyvolá ServletException, IOException {String message = request.getParameter ("message"); response.setContentType ("text / html"); . . . }

Po prvé, vidíme, že žiadosť a odpoveď objekty sa odovzdávajú ako parametre do metódy, ktorá ich sprístupňuje v rámci jej rozsahu.

K parametrom žiadosti môžeme pristupovať pomocou .getParameter () funkcie. Hore zasekneme správa parameter a inicializovať reťazcovú premennú, aby sme ju mohli použiť v našej logike na strane servera. Môžeme tiež získať prístup k odpoveď objekt, ktorý určuje, čo a ako budú dáta odovzdané do zobrazenia.

Vyššie sme na ňom nastavili typ obsahu. Nemusíme vracať odpoveď namietajte proti tomu, aby sa jeho užitočné zaťaženie zobrazilo na stránke JSP pri renderovaní!

von

von patrí do triedy javax.servlet.jsp.JspWriter a slúži na zápis obsahu klientovi.

Existujú najmenej dva spôsoby tlače na vašu stránku JSP, ktoré by ste tu mali diskutovať. von sa vytvára automaticky a umožňuje vám zapisovať do pamäte a potom do súboru odpoveď objekt:

out.print („ahoj“); out.println („svet“);

To je všetko!

Druhý prístup môže byť výkonnejší, pretože umožňuje písať priamo do súboru odpoveď objekt! Tu používame PrintWriter:

PrintWriter out = response.getWriter (); out.println („Hello World“);

2.4. Ostatné implicitné objekty

Tu sú niektoré ďalšie Implicitné objekty ktoré sú tiež dobré vedieť!

zasadanie

zasadanie patrí do triedy javax.servlet.http.HttpSession udržiava údaje používateľa po celú dobu relácie.

žiadosť

žiadosť patrí do triedy javax.servlet.ServletContext ukladá parametre celej aplikácie nastavené pri inicializácii alebo tie, ktoré je potrebné sprístupniť v celej aplikácii.

výnimkou

výnimkou patrí do triedy javax.servlet.jsp.JspException sa používa na zobrazenie chybových správ na stránkach JSP, ktoré majú značku .

stránke

stránke patrí do triedy java.lang.Objekt umožňuje prístup alebo referenciu k aktuálnym informáciám servletu.

pageContext

pageContext patrí do triedy javax.servlet.jsp.PageContext predvolené hodnoty pre stránke rozsahu, ale je možné ich použiť na prístup žiadosť, žiadosťa atribúty relácie.

konfigur

konfigur patrí do triedy javax.servlet.ServletConfig je konfiguračný objekt servletu, ktorý umožňuje získať kontext, názov a konfiguračné parametre servletu.

Teraz, keď sme pokryli implicitné objekty poskytované JSP, obráťme sa na smernice ktoré umožňujú stránkam .jsp (nepriamo) prístup k niektorým z týchto objektov.

2.5. Smernice

JSP dodáva po vybalení z krabice smernice, ktoré možno použiť na určenie základných funkcií pre naše súbory JSP. Smernice JSP majú dve časti: (1) samotná smernica a (2) atribút tejto smernice, ktorému je priradená hodnota.

Existujú tri druhy smerníc, na ktoré je možné odkazovať pomocou direktívnych značiek ktorá definuje závislosti a atribúty JSP vrátane Druh obsahu a Jazyk, - ktorá určuje import alebo súbor, ktorý sa má použiť, a - ktorá určuje knižnicu značiek definujúcu vlastné akcie, ktoré má stránka použiť.

Napríklad by bola direktíva stránky špecifikovaná pomocou značiek JSP nasledujúcim spôsobom:

A to môžeme urobiť pomocou XML nasledovne:

2.6. Atribúty smernice stránky

V smernici o stránkach je možné deklarovať množstvo atribútov:

autoFlush

autoFlush riadi výstup medzipamäte a vymaže ju, keď sa dosiahne veľkosť medzipamäte. Predvolená hodnota je pravda.

nárazník

nárazník nastavuje veľkosť medzipamäte použitej našou stránkou JSP. Predvolená hodnota je 8 kB.

errorPage

errorPage špecifikuje stránku JSP ako chybovú stránku.

predlžuje

predlžuje určuje super triedu zodpovedajúceho kódu servletu.

Info

Info sa používa na nastavenie textového popisu JSP.

isELIgnorované

isELIgnorované uvádza, či bude stránka ignorovaná alebo nie Výrazový jazyk (EL) v JSP. EL umožňuje prezentačnej vrstve komunikovať s Java Managed Beans a robí to pomocou ${…} syntax, a aj keď sa tu nebudeme venovať zložitosti EL, tu je niekoľko príkladov, ktoré stačia na zostavenie našej ukážkovej aplikácie JSP! Predvolená hodnota pre isELIgnorované je nepravdivé.

isErrorPage

isErrorPage hovorí, či stránka je alebo nie je chybová. Ak pre našu stránku v aplikácii vytvoríme obslužný program chýb, musíme určiť chybovú stránku.

isThreadSafe

isThreadSafe má predvolenú hodnotu pravda. isThreadSafe určuje, či JSP môže alebo nemôže používať Servlet multi-threading. Všeobecne by ste nikdy nechceli

túto funkciu vypnúť.

Jazyk

Jazyk určuje, aký skriptovací jazyk sa má v JSP použiť. Predvolená hodnota je Java.

zasadanie

zasadanie určuje, či sa má alebo nemá udržiavať relácia HTTP. Predvolene má hodnotu true a akceptuje hodnoty pravda alebo nepravdivé.

trimDirectiveWhitespaces

trimDirectiveWhitespaces vymaže biele miesta na stránke JSP a kondenzuje kód do kompaktnejšieho bloku v čase kompilácie. Nastavením tejto hodnoty na pravda môže pomôcť zmenšiť veľkosť kódu JSP. Predvolená hodnota je nepravdivé.

3. Tri príklady

Teraz, keď sme preskúmali koncepty ústredné pre JSP, poďme tieto koncepty aplikovať na niekoľko základných príkladov, ktoré vám pomôžu pri uvedení prvého servletu slúžiaceho do JSP do prevádzky!

Existujú tri hlavné spôsoby, ako vložiť Javu do súboru .jsp, a každý z týchto spôsobov preskúmame nižšie pomocou natívnych funkcií v prostredí Java 8 a Jakarta EE.

Najskôr vykreslíme našu značku na strane servera, aby sa zobrazila na strane klienta. Po druhé sa pozrieme na to, ako pridať kód Java priamo do nášho súboru .jsp nezávisle od javax.servlet.http‘S žiadosť a odpoveď predmety.

Po tretie, predvedieme, ako postúpiť HttpServletRequest na konkrétny .jsp a naviažte na ňu spracovanú Javu na strane servera.

Poďme nastaviť náš projekt v Eclipse pomocou Súbor / Nový / Projekt / Web / Dynamický webový projekt / zadajte hostiteľa v Tomcat! Po vytvorení projektu by ste mali vidieť:

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

Do štruktúry aplikácie pridáme niekoľko súborov, aby sme nakoniec dosiahli:

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

Poďme na to index.jsp ktoré sa zobrazia, keď vstúpime do kontextu URL v Tomcat 8:

   Príklady JSP 

Vyvolajte kód HTML vykreslený serverom Servlet: tu

Java na statickej stránke: tu

Java vložená Servletom: tu

Sú tam tri a, každý odkaz na jeden z príkladov, ktoré si prejdeme nižšie v častiach 4.1 až 4.4.

Musíme sa tiež ubezpečiť, že máme svoje web.xml nastaviť:

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

Hlavná poznámka je tu - ako správne mapovať každý z našich servletov na konkrétne mapovanie servletov. Týmto spôsobom priradíte každý servlet konkrétnemu koncovému bodu, kde sa môže spotrebovať! Teraz si prejdeme všetky ďalšie súbory uvedené nižšie!

3.1. HTML vykreslené v servlete

V tomto príklade vlastne preskočíme vytváranie súboru .jsp!

Namiesto toho vytvoríme reťazcové znázornenie nášho označenia a potom ho zapíšeme do odpovede GET pomocou PrintWriter po tom, ako Servlet ExampleOne dostane požiadavku GET:

verejná trieda ExampleOne rozširuje HttpServlet {@Override chránený void doGet (požiadavka HttpServletRequest, odpoveď HttpServletResponse) hodí ServletException, IOException {response.setContentType ("text / html"); PrintWriter out = response.getWriter (); out.println ("" + "" + "" + "HTML vykreslené servletom" + "" + "" + "
" + "

Táto stránka bola vykreslená Servletom ExampleOne!

" + "" + "" ); } }

To, čo tu robíme, je vstrekovanie našich značiek priamo do našej aplikácie vybavovania požiadaviek servletu. Namiesto značky JSP generujeme náš HTML spolu so všetkými údajmi špecifickými pre Javu, ktoré sa majú vložiť, čisto na strane servera bez statického JSP!

Predtým sme skontrolovali von objekt, ktorý je vlastnosťou JspWriter.

Vyššie som použil PrintWriter objekt, ktorý zapisuje priamo do súboru odpoveď objekt.

JspWriter skutočne ukladá reťazec, ktorý sa má zapísať do pamäte, ktorý sa potom zapíše do odpoveď objekty po vyprázdnení medzipamäte.

PrintWriter je už pripojený k odpoveď objekt. Radšej som písal priamo do odpoveď z týchto dôvodov namietajte v príkladoch vyššie a nižšie.

3.2. Java v statickom obsahu JSP

Tu vytvoríme súbor JSP s názvom ExampleTwo.jsp so značkou JSP. Ako je vidieť vyššie, toto umožňuje pridanie Javy priamo do nášho označenia. Tu náhodne vytlačíme prvok a Reťazec []:

   Príklad Java na statickej stránke 

Vyššie uvidíte uvedenú deklaráciu premennej v objektoch značiek JSP: typunázov premennej a an inicializácia rovnako ako bežná Java.

Vyššie uvedený príklad som uviedol na demonštráciu toho, ako pridať Javu na statickú stránku bez použitia konkrétneho servletu. Tu sa Java jednoducho pridá na stránku a o ostatné sa postará životný cyklus JSP.

3.3. JSP s preposielaním

Teraz pre náš posledný a najviac zapojený príklad! Tu použijeme @WebServlet anotácia k príkladu Three, ktorá eliminuje potrebu mapovania servletov v systéme Windows server.xml.

@WebServlet (name = "ExampleThree", description = "JSP Servlet s anotáciami", urlPatterns = {"/ ExampleThree"}) verejná trieda ExampleThree rozširuje HttpServlet {@Override chránený void doGet (požiadavka HttpServletRequest, HttpServletResponse odpoveď, IO ServletException, hodí ServletException Reťazec message = request.getParameter ("správa"); request.setAttribute ("text", správa); request.getRequestDispatcher ("/ ExampleThree.jsp"). forward (požiadavka, odpoveď); }}

ExampleThree vezme parameter URL odovzdaný ako správa, naviaže tento parameter na žiadosť objekt a potom ho presmeruje žiadosť namietať proti ExampleThree.jsp.

Dosiahli sme teda nielen skutočne dynamický web skúsenosti, ale urobili sme to aj v rámci aplikácie obsahujúcej viac súborov .jsp.

getRequestDispatcher (). forward () je jednoduchý spôsob, ako zabezpečiť, aby sa vykreslila správna stránka .jsp.

Všetky údaje spojené s žiadosť objekt odoslaný spôsobom (súboru .jsp) sa potom zobrazí! Tu poslednú časť spracovávame takto:

   Príklad väzby Java 

Povedali ste: $ {text}

Všimnite si značku JSP pridanú na začiatok stránky ExampleThree.jsp. Všimnete si, že som tu prepol značky JSP. Používam výrazový jazyk (ktorý som už spomínal) na vykreslenie nášho nastaveného parametra (ktorý je viazaný ako $ {text})!

3.4. Vyskúšaj to!

Teraz exportujeme našu aplikáciu do súboru .war, ktorý bude spustený a hostený v Tomcat 8! Nájdite svoje server.xml a my aktualizujeme našu Kontext do:

Čo nám umožní prístup k našim servletom a JSP localhost: 8080 / spring-mvc-xml / jsp / index.jsp! Pracovnú kópiu si môžete vyzdvihnúť na adrese: GitHub. Gratulujem!

4. Záver

Prešli sme dosť veľa pôdy! Dozvedeli sme sa o tom, čo sú stránky JavaServer, čo ich zaviedlo k dosiahnutiu, o ich životnom cykle, o tom, ako ich vytvoriť, a nakoniec o niekoľkých rôznych spôsoboch ich implementácie!

Týmto sa končí úvod do JSP! Majte sa dobre a kódujte!


$config[zx-auto] not found$config[zx-overlay] not found