JavaServer Pages (JSP) je Java standardní technologie, která umožňuje psát dynamické, data-řízený stránky pro vaše Java webových aplikací. JSP je postaven na vrcholu SPECIFIKACE Java Servlet. Obě technologie obvykle spolupracují, zejména ve starších webových aplikacích Java., Z číselného pohledu, nejvíce zřejmý rozdíl mezi nimi je, že se servlety můžete psát kód v jazyce Java a pak vložte si klient-side značky (jako HTML), do které kód, vzhledem k tomu, že s JSP začnete s skriptu na straně klienta nebo značky, pak vložte si JSP tagy, připojit se vaše stránka na Java backend.
JSP také úzce souvisí s JSF (JavaServer Faces), Java specifikací pro vytváření webových aplikací MVC (model-view-controller). JSP je relativně jednodušší a starší technologie, než JSF, což je standard pro Java rámců, jako je Eclipse Mojarra, MyFaces, a PrimeFaces., I když to není neobvyklé vidět JSP používá jako frontend pro starší JSF aplikací, Facelets je preferovaná view technologie pro moderní JSF implementací.
zatímco JSP nemusí být vaší první volbou pro vytváření dynamických webových stránek, jedná se o základní webovou technologii Java. JSP stránky jsou relativně rychlé a snadno se staví, a hladce komunikovat s Java servlety v kontejneru servlet jako Tomcat. Setkáte se s JSP ve starších webových aplikacích Java a čas od času vám může být užitečné pro vytváření jednoduchých, dynamických webových stránek Java., Jako vývojář Java byste měli být alespoň obeznámeni s JSP.
tento článek bude rychlý úvod do stránek Javaserveru, včetně knihovny standardních značek JSP (JSTL). Příklady vám ukážou, jak napsat jednoduchou stránku HTML, vložit značky JSP pro připojení k Servletu Java a spustit stránku v kontejneru servlet.
viz předchozí články v této sérii se dozvíte více o Java servlets a JavaServer tváře.
psaní stránek JSP
jednoduchá stránka JSP (.jsp) se skládá z HTML značkování vložené s JSP tagy., Když je soubor zpracován na serveru, HTML je vykreslen jako zobrazení aplikace, webové stránky. Vložené značky JSP budou použity k volání kódu a dat na straně serveru. Diagram na obrázku 1 ukazuje interakci mezi HTML, JSP a serverem webové aplikace.
Výpis 1 zobrazuje jednoduchou stránku JSP.
seznam 1., Jednoduchá JSP stránka
<html> <body> <p>${2 * 2} should equal 4</p> </body></html>
Ve Výpisu 1, vidíte blok HTML, které obsahuje určitý výraz JSP, což je pokyn k Java server napsaný pomocí Expression Language (EL). Ve výrazu „${2 * 2}
„je“${}
“ syntaxe JSP pro interpolaci kódu do HTML. Po provedení bude JSP výstup výsledky provádění, co je uvnitř výrazu. V tomto případě bude výstup číslo 4.
JSP v kontejneru servlet
stránky JSP musí být nasazeny uvnitř kontejneru Java servlet., Chcete-li nasadit webovou aplikaci Java založenou na JSP a servletech, zabalíte své .jsp soubory, Java kód, a aplikace metadata v.válečný soubor, což je jednoduché .zip soubor s konvenční strukturou pro webové aplikace.
jakmile vložíte JSP do kontejneru servletu, bude kompilován do servletu. JSPs a Java servlety sdílejí podobné vlastnosti, včetně možnosti přístupu a reakce na objekty požadavku. Apache Tomcat 9x je referenční implementace pro SPECIFIKACE Servlet 4.0 a JSP 2.3. (Všimněte si, že aktualizace mezi JSP 2.,2 a 2.3 jsou relativně malé.)
příklad aplikace pro JSP
budeme používat příklad aplikace v Tomcat, abyste mohli začít s JavaServer stránek. Pokud ještě nemáte nainstalovaný Tomcat, přejděte na stránku stahování Tomcat a vyberte instalaci Tomcat pro váš operační systém. Od tohoto psaní, Tomcat 9 je aktuální verze, kompatibilní s Servlet 4.0 a JSP 2.3.
můžete nainstalovat Tomcat jako službu systému Windows, nebo spustit z příkazového řádku s /bin/catalina.sh start
nebo /bin/catalina.bat
., Ať tak či onak, spusťte Tomcat a přejděte na localhost:8080
a podívejte se na uvítací stránku Tomcat zobrazenou na obrázku 2.
Implicitní Objekty v Tomcat
Na Tomcat uvítací stránce, klepněte na Příklady odkaz, a pak klepněte JSP Příklady.
dále otevřete implicitní objekty spustit webovou aplikaci. Obrázek 3 ukazuje výstup pro tuto aplikaci. Věnujte chvíli studiu tohoto výstupu.
parametry Požadavku
Implicitní objekty jsou vestavěné objekty přístupné přes JSP stránky. Jako vývojář webových stránek použijete tyto objekty k vytvoření přístupu k věcem, jako jsou parametry požadavku, což jsou data odeslaná z prohlížeče při vydávání požadavku HTTP. Zvažte prohlížeče URL pro Implicitní Objekty:
This example is a very simple introduction to using JSP tags to access server-side request parameters. In this case, the JSP page uses the built-in (implicit) object called param
to access the web application’s request parameters. The param
object is available inside the JSP expression syntax that you saw in Listing 1.
In that example, we used an expression to do some math: ${2 * 2}
, which output 4
.
In this example, the expression is used to access an object and a field on that object: ${param.foo}
.
JSP in a web application
On the Implicit Objects page, click the back arrow, followed by the Source link. This will lead you to the JSP code for the Implicit Objects web app, which is shown in Listing 2.
Listing 2. JSP code for the Implicit Objects web app
JSP functions
A JSP function encapsulates a chunk of reusable functionality. In this case, the functionality is to escape XML. JSP offers a variety of functions, and you can also create functions yourself. To use a function, you import its library into your JSP page, then call the function.
In Listing 2, the escapeXML
function is included with the line:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
syntaxe je celkem jasné: je to dovoz požadované funkce a přiřazuje jim prefix (v tomto případě „fn“), které mohou být použity ve všech následujících výrazů.,
JSP Standard Tag Library (JSTL)
import
řádek ve Výpisu 2 hovory taglib
, což je zkratka pro značku knihovny, nebo (v tomto případě) JSP Standard Tag Library (JSTL). Knihovny značek definují opakovaně použitelné bity funkčnosti pro JSP. JSTL je standardní knihovna značek, obsahující sbírku taglibů, které dodávají s každou implementací servlet a JSP, včetně Tomcat.
knihovna „funkce“ je pouze jedním z taglibů obsažených v JSTL., Dalším společným taglib core
knihovna, která importu voláním:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
Jako „fn“, „c“ označení je běžné, a uvidíte, že ve většině JSP stránek.
Zabezpečení JSP stránky
příklad tag z jádra knihovny je
<c:out value = "${'<div>'}"/>
výstupy <div>
tag s XML již unikl. Tato funkce je důležitá, protože výstup obsahu přímo na webovou stránku pomocí ${variable}
otevírá dveře k útokům vstřikování skriptů., Tato jednoduchá funkce se používá k ochraně webových stránek před takovými útoky.
základní knihovna obsahuje také různé značky pro iteraci a řízení toku (jako je manipulace s IF/ELSE).
volání taglibs na stránkách JSP
Nyní, když máte rukojeť na základy JSP, pojďme provést změnu na příkladu aplikace. Chcete-li začít, vyhledejte aplikaci implicitní objekt v instalaci Tomcat. Cesta je: apache-tomcat-8.5.33/webapps/examples/jsp/jsp2/el
.,
Otevřít tento soubor a vyhledejte functions
obsahuje:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
hned pod tento řádek přidat nový řádek:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Hit Vrátit a přidat další nové linky:
<c:out value = "${'This is a test of the JSTL Core Library'}"/>
načíst stránku v http://localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=bar.
měli byste vidět své aktualizace odrážející se ve výstupu.
rozložení webové aplikace JSP
Tomcat sleduje standardní rozvržení stránek Java servlet a JSP., Obecná struktura je složka s názvem aplikace, která je nasazena uvnitř adresáře Tomcat /webapps
.
v aplikaci implicitní objekty je aplikace /examples
. Otevření této složky odhaluje tři důležité děti: adresář /WEB-INF
, soubor index.html
a soubor dalších adresářů.
WEB-INF
adresář obsahuje metadata, která informuje, Tomcat, jak spustit aplikaci.
zbytek obsahu, včetně indexu.,html, je přímo přístupný, stejně jako v typickém webovém serveru. Stejně tak je k dispoziciimplicit-objects.jsp
a server je automaticky zpracován jako stránka JSP (nikoli HTML stránka).
Architektura Request-response
v typické aplikaci servlets/JSP dostávají servlety požadavky a komunikují s komponenty a službami na straně serveru (jako je databáze), aby je splnily. Po zpracování je výsledek požadavku předán na stránku JSP, která představuje odpověď.,
servlet používá následující syntaxi při zasílání žádosti reakci na JSP stránky:
request.getRequestDispatcher("path/to/jsp.jsp").forward(req,res);
bez ohledu na údaje servletu se vkládají do různých JSP obory budou přístupné JSP. Rozsah je prostě rozsah života pro daný objekt. Objekty požadavku a odpovědi jsou dotazovány, což znamená, že žijí po dobu trvání žádosti. Mezi další obory patří rozsah stránky (žijící tak dlouho, jak to dělá stránka JSP) a rozsah relace (ukončení, když uživatel ukončí danou relaci).,
závěr
JavaServer Pages je dobře známá a všestranná technologie pro vývoj zobrazení webových aplikací Java. V kombinaci se servlety jsou stránky JSP velmi výkonné a poskytují přístup k celé řadě možností Java. Zatímco JSP nemusí být vaší první volbou pro vývoj moderní webové aplikace Java, narazíte na stránky JSP ve starších aplikacích. Je to také dobrá volba pro jednodušší aplikace, kde chcete rychle připojit frontend HTML k kódu Java na straně serveru., Značky JSTL jsou schopny zvládnout většinu požadavků webových aplikací a knihovny třetích stran tuto funkci rozšiřují pro konkrétní technologie a případy použití.