„JavaServer Pages” változatai közötti eltérés

[nem ellenőrzött változat][nem ellenőrzött változat]
Tartalom törölve Tartalom hozzáadva
a a szolgaltatok listajat bovitettem
szakaszcímek + csonk
1. sor:
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 szervlet 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.
 
== Történet ==
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.
 
== Szintaxis ==
Egy JSP oldalban a következő nyelvi elemek lehetnek:
* statikus adat, például [[HTML]] kód
11. sor:
* akciók
* elemkönyvtárakban definiált ''tag''-ek
=== Direktívák ===
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'''
==== include ====
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 F'''ragment rövidítése:
<%@ include file="valami_file.jspf" %>
 
==== page ====
A '''page''' direktíva hatása a kapott opcióktól függ, melyeket az alábbiakban részletezünk:
 
54. sor:
:<pre><%@ page autoFlush=false %></pre>
 
==== taglib ====
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" %>
 
=== Szkriptelemek ===
Háromféleképpen lehet [[Java programozási nyelv|java]] forráskódot elhelyezni a JSP oldalban: deklarációk, szkriptrészletek és kifejezések formájában:
==== Deklarációk ====
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; %>
70. sor:
%>
 
==== Szkriptrészletek ====
A ''szkriprészlet'' (angolul ''scriptlet'') tagben megadott kódrészlet a generált servlet osztály <code>_jspService()</code> metódusába másolódik be.
 
78. sor:
'''<%''' int lokalisValtozo = 6 * 7 ; out.println("Hatszor hét az " + lokalisValtozo + "."); '''%>'''
 
==== Kifejezések ====
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 <math>\sqrt{2}</math> közelítő értékét generálja:
<%= Math.sqrt(2) %>
92. sor:
; application : Alkalmazásadatokat tartalmazó objektum.
; exception : A dobott kivétel objektumot tartalmazza, amennyiben az adott JSP oldal hibalap, azaz <tt>isErrorPage="true"</tt>.
==== Megjegyzések ====
A ''megjegyzés'' tag-ek formátuma az alábbi:
<%-- Megjegyzés szövege --%>
 
=== Akciók ===
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:
; <nowiki>jsp:include</nowiki> : Hasonlatos a szubrutinhíváshoz. Hatására a servlet átadja a [[HTTP]] kérés kezelését egy másik oldalnak. Ha a megadott oldal válaszolt, akkor visszakerül a vezérlés a hívó oldalhoz. Ezzel az akcióval az egyszer megírt kód újrahasználható, s így nem kell azt duplikálni. Az a különbség az include direktíva és a jsp:include akció között, hogy míg a direktíva statikusan illeszti be egy másik oldal tartalmát fordítás előtt, addig a jsp:include akció dinamikusan, a [[HTTP]] kérés kezelésekor fut le és így dinamikusan generált tartalmat is be tud illeszteni.
107. sor:
; <nowiki>jsp:useBean</nowiki> : Létrehoz illetve újrafelhasznál egy JavaBeant.
 
=== Elemkönyvtárak ===
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 <tt>.tld</tt>. Az alábbi példában feltesszük, hogy létezik egy <tt>krumpli.tld</tt> 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" %>
116. sor:
 
== Példák ==
{{csonk-szakasz}}
== Külső hivatkozások ==
* [http://java.sun.com/products/jsp/ A hivatalos JSP leírás a Sun-tól]
* [http://www.visualbuilder.com/jsp/tutorial/ Angol nyelvű JSP bevezető]