From Wikipedia, the free encyclopedia
A JavaServer Pages (röviden JSP) egy technológia, melynek segítségével a szoftverfejlesztő dinamikusan tud generálni HTML, XML vagy egyéb dokumentumokat HTTP kérésekre reagálva. A JSP tekinthető a servlet réteg feletti absztrakciós szintnek. A JSP oldalból java servlet forráskód generálódik. A JSP 2006 májusa óta a J2EE specifikáció része.
Az első hivatalos JSP specifikációt 1999 júniusában adták ki. A későbbi változatok felülről kompatibilisek ezzel az 1.0 verzióval. Szintén még 1999-ben jelent meg a JSP 1.1 verzió decemberben, amely már lehetőséget adott a custom tag libraries, magyarul elemkönyvtárak használatára. A JSP 1.2 verzió 2001 szeptemberében látott napvilágot. Ezt követte a JSP 2.0 verzió, amelyben már szerepelt a kifejezésnyelv (angolul Expression Language vagy röviden EL) és a JSPX dokumentumok támogatása is. A legfrissebb JSP specifikáció a JSP 2.1.
Egy JSP oldalban a következő nyelvi elemek lehetnek:
A direktívák tekinthetők a JSP konténernek szóló utasításoknak is. Attribútumaik is lehetnek. A direktívák általános alakja a következő:
<%@ direktívanév attr_1="érték_1" attr_2="érték_2" … %>
Három féle direktíva használható JSP oldalakban: include, page és a taglib
Az include direktívával be lehet illeszteni egy teljes fájl tartalmát az adott JSP oldalba. Ez hasonlatos a C programozási nyelv #include direktívájához. Statikus tartalmat illeszt be a fordítás előtt. (Dinamikus, futásidejű beillesztés a jsp:include akcióval lehetséges.) A beillesztett fájlok kiterjesztése általában .jspf, ami a JSP Fragment rövidítése:
<%@ include file="valami_file.jspf" %>
A page direktíva hatása a kapott opcióktól függ, melyeket az alábbiakban részletezünk:
<%@ page import="java.util.*" %>
<%@ page contentType="text/html;charset=ISO-8859-2" %>
<%@ page errorPage="hibalap.jsp" %>
<%@ page isErrorPage=false %>
<%@ page isThreadSafe=true %>
<%@ page info="Ez itt, kéremszépen, fontos servlet információ." %>
<%@ page extends="ValamiOsztaly" %>
<%@ page session=false %>
<%@ page buffer="32kb" %>
<%@ page buffer="none" %>
<%@ page autoFlush=false %>
A taglib direktívával JSP elemkönyvtárakat lehet használni. Paraméterként meg kell adni egy URI-t, ahol az elemkönyvtár leírófájlja található, valamint egy prefixumot, amivel később hivatkozni lehet az elemkönyvtár elemeire. Például így:
<%@ taglib prefix="kedvencprefixumom" uri="taglib/kedvenc.tld" %>
Háromféleképpen lehet java forráskódot elhelyezni a JSP oldalban: deklarációk, szkriptrészletek és kifejezések formájában:
A deklarációs tag-ben definiált kód teljes egészében bemásolódik a generált java servlet osztály forráskódjába. Például adattagokat lehet vele definiálni:
<%! int serverInstanceVariable = 1; %>
A deklarációs tag metódust is tartalmazhat, amely szintén a generált szervlet osztályba kerül be:
<%! public void increaseServerInstanceVariable() { serverInstanceVariable++; } %>
A szkriptrészlet (angolul scriptlet) tagben megadott kódrészlet a generált servlet osztály _jspService()
metódusába másolódik be.
Szintaxisa:
<% java forráskód %>
Példa:
<% int lokalisValtozo = 6 * 7 ; out.println("Hatszor hét az " + lokalisValtozo + "."); %>
A kifejezés tag-ben megadott kifejezés futási időben értékelődik ki és az értéke kerül a webszerver által visszaadott HTML kódba. Az alábbi példa közelítő értékét generálja:
<%= Math.sqrt(2) %>
Léteznek ún. implicit objektumok, melyeket a JSP container láthatóvá tesz a JSP oldalak számára. Ezekre hivatkozhat a szoftverfejlesztő a JSP kódban:
A megjegyzés tag-ek formátuma az alábbi:
<%-- Megjegyzés szövege --%>
A JSP tartalmaz standard akciókat is, de a JSP 1.1 verziója óta lehetséges a saját akciók definiálása is saját elemkönyvtárak (angolul custom tag libraries) használatával. Az alábbi lista mutatja a JSP standard akcióit:
A JSP 1.1 és az azt követő verziókban lehetséges a saját elemkönyvtárak használata. A fejlesztőnek meg kell írnia egy java osztályban az akció kódját, továbbá kell készítenie egy elemkönyvtárleíró XML fájlt, angolul tag library desciptor-t. Az ilyen fájlok kiterjesztése jellemzően .tld. Az alábbi példában feltesszük, hogy létezik egy krumpli.tld elemkönyvtárleíró fájl és a hozzá tartozó implementáció. A JSP oldalban először hivatkozni kell a leírófájlra és meg kell adni a használni kívánt prefixumot a taglib direktíva segítségével, majd használhatóak az akciók:
<%@ taglib uri="krumpli.tld" prefix="trallala" %> … <trallala:izgalmasakcio> <%-- a nyitó tag %> … </trallala:izgalmasakcio> <%-- a záró tag %> …