JavaServer Pages (JSP) egy Java szabványos technológia, amely lehetővé teszi, hogy írjon dinamikus, adatvezérelt oldalak a Java webes alkalmazások. A JSP a Java Servlet specifikáció tetejére épül. A két technológia általában együtt működik, különösen a régebbi Java webes alkalmazásokban., A kódolás szempontjából a legnyilvánvalóbb különbség közöttük az, hogy a servlets írni Java kódot, majd beágyazása kliens-oldali markup (HTML) be azt a kódot, mivel a JSP kezdődik, hogy a kliens-oldali script, vagy jelölést, akkor beágyazása JSP kategória, hogy csatlakoztassa az oldal, hogy a Java backend.
a JSP szorosan kapcsolódik a JSF-hez (JavaServer Faces), amely egy Java specifikáció az MVC (model-view-controller) webes alkalmazások építéséhez. A JSP egy viszonylag egyszerűbb és régebbi technológia, mint a JSF, ami a Java webes keretrendszerek, mint az Eclipse Mojarra, MyFaces és PrimeFaces szabványa., Bár nem ritka, hogy a JSP-t használják a régebbi JSF alkalmazások frontendjeként, a Facelets a modern JSF implementációk előnyben részesített nézet technológiája.
míg a JSP nem lehet az első választás a dinamikus weboldalak építéséhez, ez egy alapvető Java webes technológia. A JSP-oldalak viszonylag gyorsak és könnyen építhetők, és zökkenőmentesen működnek együtt a Java Servlet-ekkel egy olyan servlet-tárolóban, mint a Tomcat. JSP-vel találkozol a régebbi Java webes alkalmazásokban, és időről időre hasznosnak találod az egyszerű, dinamikus Java weboldalak felépítéséhez., Java fejlesztőként legalább ismernie kell a JSP-t.
Ez a cikk egy gyors bevezetés JavaServer oldalak, beleértve a JSP Standard Tag Library (JSTL). Példák mutatják, hogyan kell írni egy egyszerű HTML oldalt, beágyazni a JSP címkéket a Java servlethez való csatlakozáshoz, majd futtatni az oldalt egy servlet tárolóban.
lásd a korábbi cikkeket ebben a sorozatban, hogy többet tudjon meg a Java servlets és JavaServer arcok.
JSP oldalak írása
egy egyszerű JSP oldal (.jsp) áll HTML jelölés beágyazott JSP címkék., Amikor a fájlt a kiszolgálón dolgozzák fel, a HTML alkalmazásnézetként, weboldalként jelenik meg. A beágyazott JSP címkék a szerver oldali kód és adatok hívására szolgálnak. Az 1. ábrán látható ábra a HTML, a JSP és a webalkalmazás szerver közötti kölcsönhatást mutatja.
az 1. lista egy egyszerű JSP oldalt mutat.
lista 1., Egy egyszerű JSP oldal
<html> <body> <p>${2 * 2} should equal 4</p> </body></html>
az 1. felsorolásban megjelenik egy HTML blokk, amely tartalmaz egy JSP kifejezést, amely egy utasítás a Java szervernek, amelyet Kifejezésnyelv (EL) segítségével írtak. A “${2 * 2}
” kifejezésben a “${}
” JSP szintaxis a kód HTML-be történő interpolálásához. Ha végrehajtásra kerül, a JSP kimenetet ad a végrehajtás eredményeiről, bármi is van a kifejezésben. Ebben az esetben a kimenet a 4.szám lesz.
JSP a servlet konténerben
a JSP oldalakat Java servlet konténerben kell elhelyezni., Annak érdekében, hogy telepíteni egy Java webes alkalmazás alapján JSP servlets, akkor csomagolja a .jsp fájlok, Java kód és alkalmazás metaadatok a .háborús fájl, ami egyszerű .zip fájl egy hagyományos struktúra webes alkalmazások.
miután betöltötte a JSP-t a servlet konténerébe, egy servlet-be lesz lefordítva. A JSP-k és a Java Servlet-ek hasonló jellemzőkkel rendelkeznek, beleértve az objektumok elérésének és megválaszolásának képességét. Az Apache Tomcat 9x a Servlet 4.0 és JSP 2.3 SPECIFIKÁCIÓK referencia implementációja. (Vegye figyelembe, hogy a frissítések között JSP 2.,A 2. és a 2.3. viszonylag kicsi.)
példa alkalmazás JSP
a Tomcat példaalkalmazását fogjuk használni a JavaServer oldalak elindításához. Ha még nincs telepítve a Tomcat, keresse meg a Tomcat letöltési oldalt, majd válassza ki az operációs rendszer Tomcat telepítését. Az írástól kezdve a Tomcat 9 a jelenlegi kiadás, kompatibilis a Servlet 4.0-val és a JSP 2.3-mal.
A Tomcat Windows szolgáltatásként telepíthető, vagy a /bin/catalina.sh start
vagy /bin/catalina.bat
parancssorból futtatható., Akárhogy is, indítsa el a Tomcat-ot, majd lépjen a localhost:8080
menüpontra, hogy megnézze a Tomcat üdvözlő oldalát a 2.ábrán.
Implicit objektumok Tomcat
a Tomcat üdvözlő oldalán kattintson a példák linkre, majd kattintson a JSP példák elemre.
ezután nyissa meg az Implicit objektumok végrehajtják a webes alkalmazást. Ábra 3 mutatja kimenet ezt az alkalmazást. Szánjon egy percet, hogy tanulmányozza ezt a kimenetet.
Request paraméterek
Implicit objektumok beépített objektumok, amelyek JSP oldalon keresztül érhetők el. Weboldal-fejlesztőként ezeket az objektumokat arra használja, hogy hozzáférést biztosítson olyan dolgokhoz, mint például a kérés paraméterei, amelyek a böngészőből küldött adatok, Amikor HTTP-kérelmet bocsátanak ki. Tekintsük a böngésző URL Implicit objektumok:
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" %>
a szintaxis elég világos: importálja a szükséges funkciókat, és hozzárendeli őket egy előtag (ebben az esetben” fn”), hogy lehet használni az összes következő kifejezéseket.,
the JSP Standard Tag Library (JSTL)
The import
line in Listing 2 calls taglib
, ami rövid a tag library, vagy (ebben az esetben) JSP Standard Tag Library (JSTL). A címkekönyvtárak újrafelhasználható biteket határoznak meg a JSP-hez. JSTL a standard tag könyvtár, amely egy gyűjtemény taglibs, hogy a hajó minden servlet és JSP végrehajtása, beleértve Tomcat.
a “függvények” könyvtár csak az egyik taglib tartalmazza JSTL., Egy másik gyakori taglib a core
könyvtár, amely behozatali hívja:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
Mint a “fn”, a “c” minősítés hagyományos látni fogja át a legtöbb JSP-oldalak.
JSP pages
az alapkönyvtárból egy példacímke
<c:out value = "${'<div>'}"/>
, amely a <div>
címkét adja ki a már megszökött XML-vel. Ez a funkció azért fontos, mert a tartalom közvetlenül egy weboldalra történő kiadása a ${variable}
segítségével megnyitja az ajtót a szkript-befecskendezési támadásokhoz., Ez az egyszerű funkció arra szolgál, hogy megvédje a weboldalakat az ilyen támadásoktól.
a magkönyvtár különböző címkéket is tartalmaz az iterációhoz és az áramlásszabályozáshoz (például IF/ELSE kezelés).
A taglibs hívása a JSP pages
– ben most, hogy megvan a fogantyú a JSP alapjain, változtassuk meg a példaalkalmazást. A kezdéshez keresse meg az Implicit objektum alkalmazást a Tomcat telepítésében. Az útvonal: apache-tomcat-8.5.33/webapps/examples/jsp/jsp2/el
.,
nyissa meg ezt a fájlt és keresse meg a functions
include:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
közvetlenül a sor alatt adjon hozzá egy új sort:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Hit Return and add another new line:
/p>
<c:out value = "${'This is a test of the JSTL Core Library'}"/>
most töltse újra az oldalt http://localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=bar.
meg kell látni a frissítéseket tükröződik a kimenet.
JSP webalkalmazás
Tomcat a Java servlet és JSP oldalak standard elrendezését követi., Az általános struktúra egy mappa az alkalmazás nevével, amelyet a Tomcat /webapps
könyvtárába telepítenek.
Az Implicit objektumok alkalmazásban az alkalmazás /examples
. A Mappa megnyitása három fontos gyermeket tár fel: a /WEB-INF
könyvtárat, a index.html
fájlt, valamint egy sor más könyvtárat.
a WEB-INF
könyvtár metaadatokat tartalmaz, amelyek tájékoztatják a Tomcat-ot az alkalmazás futtatásáról.
A tartalom többi része, beleértve az Indexet is.,html, közvetlenül elérhető, csakúgy, mint egy tipikus webszerverben. Hasonlóképpen, aimplicit-objects.jsp
megtekinthető, és automatikusan kezeli a JSP oldal (nem HTML oldal) a szerver.
Request-response architecture
egy tipikus servlets / JSP alkalmazásban a servlets kéréseket kap, és interakcióba lép a szerver oldali összetevőkkel és szolgáltatásokkal (például az adatbázissal) azok teljesítéséhez. A kezelés után a kérés eredménye továbbításra kerül egy JSP oldalra, amely bemutatja a választ.,
a servlet a következő szintaxist használja, amikor kérésválaszt küld egy JSP oldalra:
request.getRequestDispatcher("path/to/jsp.jsp").forward(req,res);
bármilyen adat, amelyet a servlet beillesztett a különböző JSP-hatókörökbe, elérhető lesz a JSP számára. A hatókör egyszerűen egy adott objektum életének tartománya. A Request and response objektumok a kérelem hatóköre alatt vannak, vagyis a kérés időtartama alatt élnek. Egyéb hatókörök közé tartozik az oldal hatóköre (a JSP-oldal eléréséig), valamint a munkamenet hatóköre (az adott munkamenet befejezésekor).,
következtetés
a JavaServer Pages egy jól ismert és sokoldalú technológia a Java webalkalmazások nézeteinek fejlesztéséhez. Együtt servlets, JSP oldalak nagyon erős, hozzáférést biztosít a teljes körű Java képességeit. Bár JSP nem lehet az első választás a fejlődő modern Java webes alkalmazás, akkor találkozik JSP oldalak régi alkalmazások. Ez is egy jó választás egyszerűbb alkalmazások, ahol azt szeretnénk, hogy gyorsan csatlakoztassa a HTML frontend szerver oldali Java kódot., A jstl címkék képesek kezelni a legtöbb webes alkalmazás követelményeit, a harmadik féltől származó könyvtárak pedig kiterjesztik ezt a funkciót bizonyos technológiákra és felhasználási esetekre.