Programovanie

Čo je to JSP? Úvod do stránok JavaServer

JavaServer Pages (JSP) je štandardná technológia Java, ktorá vám umožňuje písať dynamické stránky riadené údajmi pre vaše webové aplikácie Java. JSP je postavený na vrchole špecifikácie Java Servlet. Tieto dve technológie zvyčajne spolupracujú, najmä v starších webových aplikáciách Java. Z hľadiska kódovania je medzi nimi najzrejmejší rozdiel v tom, že s servletmi napíšete kód Java a do tohto kódu vložíte označenie na strane klienta (napríklad HTML), zatiaľ čo pri JSP začnete skriptom alebo označením na strane klienta a potom vložíte Značky JSP na pripojenie vašej stránky k backendu Java.

JSP tiež úzko súvisí s JSF (JavaServer Faces), špecifikáciou Java pre vytváranie webových aplikácií MVC (model-view-controller). JSP je relatívne jednoduchšia a staršia technológia ako JSF, ktorá je štandardom pre webové rámce Java ako Eclipse Mojarra, MyFaces a PrimeFaces. Aj keď nie je nezvyčajné vidieť, že JSP sa používa ako rozhranie pre staršie aplikácie JSF, Facelets je preferovanou technológiou zobrazenia pre moderné implementácie JSF.

Aj keď JSP nemusí byť vašou prvou voľbou pre vytváranie dynamických webových stránok, je to základná webová technológia Java. Stránky JSP sa dajú zostaviť pomerne rýchlo a ľahko a bezproblémovo interagujú s servletmi Java v kontajneri servletov, ako je Tomcat. S JSP sa stretnete v starších webových aplikáciách Java a občas sa vám bude hodiť pri vytváraní jednoduchých, dynamických webových stránok Java. Ako vývojár v prostredí Java by ste mali ovládať aspoň JSP.

Tento článok bude krátkym úvodom do stránok JavaServer, vrátane knižnice štandardných značiek JSP (JSTL). Príklady vám ukážu, ako napísať jednoduchú stránku HTML, vložiť značky JSP na pripojenie k servletu Java a spustiť stránku v kontajneri servletu.

V predchádzajúcich článkoch tejto série sa dozviete viac o servletech Java a tvárach JavaServera.

JSP v Jakarte EE

Po vydaní Java EE 8 presunula spoločnosť Oracle správu Java Enterprise Edition (Java EE) do nadácie Eclipse. Do budúcnosti sa podniková platforma Java premenovala na Jakarta EE. Spolu so špecifikáciami Java Servlet a JSF je JSP jednou z webových technológií Java zahrnutých pre nepretržitú podporu a upgrady v Jakarte EE.

Písanie stránok JSP

Jednoduchá stránka JSP (.jsp) pozostáva zo značiek HTML vložených do značiek JSP. Pri spracovaní súboru na serveri sa kód HTML vykreslí ako zobrazenie aplikácie, webová stránka. Vložené značky JSP sa použijú na volanie kódu a údajov na strane servera. Diagram na obrázku 1 ukazuje interakciu medzi HTML, JSP a webovým aplikačným serverom.

Matthew Tyson

Výpis 1 zobrazuje jednoduchú stránku JSP.

Zoznam 1. Jednoduchá stránka JSP

$ {2 * 2} by sa malo rovnať 4

V zozname 1 uvidíte blok kódu HTML, ktorý obsahuje a Výraz JSP, čo je inštrukcia pre server Java napísaná pomocou jazyka Expression Language (EL). Vo výraze „${2 * 2}„,“${}"je syntax JSP na interpoláciu kódu do HTML. Po vykonaní bude JSP vydávať výsledky vykonávania všetkého, čo je vo vnútri výrazu. V takom prípade bude výstupom číslo 4."

JSP v servletovom kontajneri

Stránky JSP musia byť umiestnené v kontajneri servletov Java. Ak chcete nasadiť webovú aplikáciu Java založenú na JSP a servlete, zbalíte svoje súbory .jsp, kód Java a metadáta aplikácie do súboru .war, čo je jednoduchý súbor .zip s konvenčnou štruktúrou pre webové aplikácie.

Po zavedení JSP do kontajnera servletu sa kompiluje do servletu. JSP a servlety Java zdieľajú podobné vlastnosti vrátane schopnosti prístupu a reagovania na vyžiadané objekty. Apache Tomcat 9x je referenčnou implementáciou pre špecifikácie Servlet 4.0 a JSP 2.3. (Upozorňujeme, že aktualizácie medzi JSP 2.2 a 2.3 sú relatívne malé.)

Servletový kontajner vs. aplikačný server

Vo svete Java, a nádoba na servlet, známy tiež ako webový server, je ako odľahčená (pivná) verzia aplikačného servera. Kontajner servletu spracováva interakcie požiadavka a odpoveď a umožňuje interakciu týchto interakcií s podmnožinou podnikových schopností Java pre webové aplikácie. Aplikačný server Java obsahuje kontajner servletu ako súčasť celého podnikového zásobníka Java vrátane EJB, JPA, JMS a ďalších.

Príklad aplikácie pre JSP

Použijeme ukážkovú aplikáciu v Tomcate, aby sme vám pomohli začať s JavaServer Pages. Ak ešte nemáte nainštalovaný Tomcat, prejdite na stránku sťahovania Tomcat a vyberte inštaláciu Tomcat pre váš operačný systém. Od tohto písania je Tomcat 9 aktuálnym vydaním kompatibilným so servletom 4.0 a JSP 2.3.

Tomcat môžete nainštalovať ako službu Windows alebo ho spustiť z príkazového riadku pomocou /bin/catalina.sh štart alebo /bin/catalina.bat. Či tak alebo onak, spustite Tomcat a potom choďte na localhost: 8080 zobrazíte uvítaciu stránku Tomcat zobrazenú na obrázku 2.

Matthew Tyson

Implicitné objekty v službe Tomcat

Na uvítacej stránke Tomcat kliknite na ikonu Príklady kliknite na odkaz Príklady JSP.

Ďalej otvorte Vykonajte implicitné objekty webová aplikácia. Obrázok 3 zobrazuje výstup pre túto aplikáciu. Venujte chvíľu štúdiu tohto výstupu.

Matthew Tyson

Požiadajte o parametre

Implicitné objekty sú vstavané objekty prístupné cez stránku JSP. Ako vývojár webových stránok budete tieto objekty používať na vytvorenie prístupu k veciam ako parametre požiadavky, čo sú údaje odosielané z prehliadača pri vydávaní požiadavky HTTP. Zvážte adresu URL prehliadača pre implicitné objekty:

 //localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=bar 

Param je ? foo = bar, a môžete to vidieť na výstupe na webovej stránke, kde tabuľka zobrazuje výraz „EL Expression“ a hodnota je „bar“. Ak to chcete vyskúšať, zmeňte adresu URL na //localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=zork, hit Zadajte, a zmena sa prejaví vo výstupe.

Tento príklad je veľmi jednoduchým úvodom do používania značiek JSP na prístup k parametrom požiadaviek na strane servera. V tomto prípade stránka JSP používa zabudovaný (implicitný) objekt s názvom param na prístup k parametrom požiadavky webovej aplikácie. The param objekt je k dispozícii vo vnútri syntaxe výrazu JSP, ktorú ste videli v zozname 1.

V tomto príklade sme použili výraz na vykonanie matematiky: ${2 * 2}, ktorý výstup 4.

V tomto príklade sa výraz používa na prístup k objektu a poľu na tomto objekte: $ {param.foo}.

JSP vo webovej aplikácii

Na stránke Implicitné objekty kliknite na šípku späť a potom na ikonu Zdroj odkaz. Týmto sa dostanete k kódu JSP pre webovú aplikáciu Implicit Objects, ktorý je uvedený v zozname 2.

Zoznam 2. Kód JSP pre webovú aplikáciu Implicit Objects

     Výrazový jazyk JSP 2.0 - implicitné objekty 
Tento príklad ilustruje niektoré implicitné objekty dostupné v Expression Language. K dispozícii sú nasledujúce implicitné objekty (nie všetky sú tu znázornené):
  • pageContext - objekt PageContext
  • pageScope - mapa, ktorá mapuje názvy atribútov s rozsahom na stránky na ich hodnoty
  • requestScope - mapa, ktorá mapuje názvy atribútov s rozsahom na ich hodnoty
  • sessionScope - mapa, ktorá mapuje názvy atribútov s rozsahom relácie na ich hodnoty
  • applicationScope - mapa, ktorá mapuje názvy atribútov s rozsahom na ich hodnoty
  • param - Mapa mapujúca názvy parametrov na jednu hodnotu parametra String
  • paramValues ​​- Mapa, ktorá mapuje názvy parametrov na String [] všetkých hodnôt pre tento parameter
  • header - Mapa mapujúca názvy hlavičiek na jednu hodnotu hlavičky String
  • headerValues ​​- Mapa, ktorá mapuje názvy hlavičiek na String [] všetkých hodnôt pre túto hlavičku
  • initParam - mapa mapujúca názvy parametrov inicializácie kontextu na ich hodnotu parametra String
  • cookie - mapa mapujúca názvy súborov cookie na jeden objekt cookie.
Zmena parametra foo =

EL výrazVýsledok
\ $ {param.foo}$ {fn: escapeXml (param ["foo"])}}
\ $ {param ["foo"]}$ {fn: escapeXml (param ["foo"])}}
\ $ {header ["host"]}$ {fn: escapeXml (hlavička ["hostiteľ"])}
\ $ {header ["accept"]}$ {fn: escapeXml (hlavička ["prijať"])}
\ $ {header ["user-agent"]}$ {fn: escapeXml (hlavička ["user-agent"])}}

Funkcie JSP

Ak ovládate HTML, zoznam 2 by mal vyzerať dosť dobre. Máte očakávaný kód HTML prvkov, za ktorými nasleduje ${ } Syntax výrazu JSP uvedená v zozname 1. Všimnite si však hodnotu pre param.foo: $ {fn: escapeXml (param ["foo"])}} . „fn: escapeXML ()"je funkcia JSP.

A Funkcia JSP zapuzdruje kus opakovane použiteľnej funkčnosti. V tomto prípade je funkciou uniknúť XML. JSP ponúka rôzne funkcie a môžete si ich tiež vytvoriť sami. Ak chcete použiť funkciu, importujete jej knižnicu na svoju stránku JSP a potom túto funkciu zavoláte.

V zozname 2 je uniknúťXML funkcia je zahrnutá v riadku:

Syntax je dosť jasná: importuje požadované funkcie a priradí im predponu (v tomto prípade „fn“), ktorú je možné použiť vo všetkých nasledujúcich výrazoch.

Knižnica štandardných značiek JSP (JSTL)

The dovoz linka v zozname 2 hovorov taglib, čo je skratka pre knižnica značiek, alebo (v tomto prípade) JSP Standard Tag Library (JSTL). Knižnice značiek definujú opakovane použiteľné bity funkčnosti pre JSP. JSTL je štandardná knižnica značiek, ktorá obsahuje zbierku značiek, ktoré sa dodávajú s každou implementáciou servletu a JSP vrátane Tomcatu.

Knižnica „funkcií“ je iba jedným z taglibs zahrnutých do JSTL. Ďalším bežným taglib je jadro knižnica, ktorú importujete volaním:

Rovnako ako „fn“ je aj označenie „c“ bežné a uvidíte ho na väčšine stránok JSP.

Zabezpečenie stránok JSP

Vzorový štítok z jadrovej knižnice je

ktorý vydáva značka s kódom XML už unikla. Táto funkcia je dôležitá, pretože výstup obsahu priamo na webovú stránku pomocou $ {variable} otvára dvere útokom vstrekovania skriptov. Táto jednoduchá funkcia sa používa na ochranu webových stránok pred takýmito útokmi.

Knižnica jadra tiež obsahuje rôzne značky pre iteráciu a riadenie toku (napríklad spracovanie IF / ELSE).

Klasifikácie značiek JSTL

JSTL obsahuje päť sád značiek, z ktorých každá je navrhnutá pre konkrétnu oblasť funkcií webových aplikácií:

  • Jadro JSTL: riešenie logiky a toku vykonávania; konvenčná značka: "c"
  • Formátovanie JSTL: Zaoberanie sa formátovaním (napríklad dátumami) a internacionalizáciou; konvenčná značka: "fmt".
  • JSTL SQL: Zaoberanie sa dotazovaním na databázy SQL (vo vrstve zobrazenia sa to zvyčajne neodporúča); konvenčná značka: "štvorcový".
  • JSTL XML: Zaoberanie sa prácou s dokumentmi XML; konvenčná značka: "X".
  • Funkcie JSTL: Zaoberanie sa predovšetkým manipuláciami s reťazcami; konvenčná značka: "fn".

Volanie taglibs na stránkach JSP

Teraz, keď máte základné znalosti o JSP, urobme zmenu v ukážkovej aplikácii. Ak chcete začať, vo svojej inštalácii Tomcat vyhľadajte aplikáciu Implicit Object. Cesta je: apache-tomcat-8.5.33 / webapps / examples / jsp / jsp2 / el.

Otvorte tento súbor a vyhľadajte funkcie zahŕňajú:

tesne pod tento riadok, pridajte nový riadok:

Stlačte Return a pridajte ďalší nový riadok:

Teraz stránku znova načítajte na //localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=bar.

Mali by ste vidieť svoje aktualizácie odrážať vo výstupe.

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