Web Technológiák Répási Tibor egyetemi tanársegéd
Java Server Pages - JSP
– –
Miskolc Egyetem Infomatikai és Villamosmérnöki Tanszékcsoport (IVM)
JSP technológia: –
–
JSP lap tartalma: –
Általános Informatikai Tanszék
JSP elemek: – – –
feldolgozásra kerülnek dinamikus tartalommal helyettesítdnek típusai:
scriptlet: <% … %> direktíva: <%@ directive … %> standard JSP elem: <jsp:element ...>… egyedi JSP elem: <prefix:element ...>... JSP kifejezés: ${ … }
statikus szakaszok: szöveg (lehet strukturált is, pl. HTML, XML, WML, stb.) dinamikus tartalmat elállító JSP elemek
JSP lapok (javasolt) tárolása: –
Iroda: Inf.Int. 108. Tel: 2101
Java Server Pages - JSP
–
szöveg alapú dokumentumok elállítása tartalmaz statikus és dinamikus szakaszokat jelöl nyelv szerver oldali objektumok elérésére lehetség a jelöl nyelv kiterjesztésére
–
.jsp : teljes JSP oldal .jspf : egy JSP oldal részlete
JSP lapok életciklusa
A JSP lap, mint web komponens: – – – –
kéréseket szolgál ki, servlet-ként el feldolgozás: servlet forráskód elállítása a jsp szöveg alapján fordítás: server osztály lefordítása kérés kiszolgálás: a servlet életciklusa szerint
JSP lapok életciklusa
Az el feldolgozás menete: – – – – – –
Java osztály elállítása sablon alapján direktívákkal befolyásolható statikus szakaszok alapján output utasítások generálása scriptlet kódjának átemelése a servlet forrásba kifejezések átadása a JSP kifejezés kiértékelnek JSP elemek helyén meghívódik az azokat megvalósító osztály megfelel metódusa
Statikus tartalom elállítása
Szükséges beállítások: – – –
A kódolást az el feldolgozó végzi, direktívák alapján: – – –
Dinamikus tartalom elállítása
Java objektumok metódushívásai eredménye képen jön létre. –
–
implicit objektumok: létrehozásukról a servlet sablon gondoskodik (pl. pageContext, param, paramValues, cookie, stb.) explicit objektumok: scriptlet kódban létrehoztuk, késbb használhatjuk
Objektumok osztott használata: – –
különös gondosságot igényel (több-szálú feldolgozás) <%@ page isThreadSafe="true|false" %>
Milyen MIME típus lesz a statikus tartalomból? Milyen kódolású lesz? Milyen a JSP statikus tartalmának kódolása?
<%@ page contentType="text/html; charset=UTF-8" %> <%@ page pageEncoding="UTF-8" %> lehet egyetlen page direktívába is írni.
Scriptlet használata <%@page contentType="text/html" pageEncoding="UTF-8"%>
JSP Page Bart's penalty
<% for (int i=0; i < 100; i++) out.println("I'm not going to use scriptlets this way.
"); %>
JavaBean -ek használata <%@page contentType="text/html" pageEncoding="UTF-8"%> <jsp:useBean id="naptar" class="java.util.Date"/> …
Nap: <jsp:getProperty name="naptar" property="date"/> Honap: <jsp:getProperty name="naptar” property="month"/> Ev: <jsp:getProperty name="naptar" property="year"/> Ora: <jsp:getProperty name="naptar" property="hours"/> Perc: <jsp:getProperty name="naptar" property="minutes"/>
JavaBean -ek használata package csomag; public class peldaBean { private int evszam; private String nev;
public void setEvszam(final int evszam) { this.evszam = evszam; } public String getNev() { return new String(nev); }
public peldaBean() { evszam = 2008; } public int getEvszam() { return evszam; }
public void setNev(final String nev) { this.nev = new String(nev); } }
JavaBean -ek használata
Egy HTML rlap feldolgozása:
JavaBean -ek használata Létrehozzuk a JavaBean-t és felöltjük az rlap adataival <jsp:useBean class="csomag.peldaBean" id="szemely" scope="session"> <jsp:setProperty name="szemely" property="*"/>
JavaBean -ek használata
JSP TagLibrary
–
Csináljuk valami hasznosat: <jsp:useBean class="csomag.peldaBean" id="szemely" scope="session"/> <jsp:useBean id="naptar" class="java.util.Date"/>
A JSP elemkészletének kiegészítése –
Használata: –
<%@ taglib prefix="tt" [tagdir=/WEB-INF/tags/dir | uri=URI ] %>
–
<prefix:tag attr1="value" ... attrN="value" />
–
<prefix:tag attr1="value" ... attrN="value"> body
Hello <jsp:getProperty name="szemely" property="nev"/>. Iden <%= naptar.getYear() - szemely.getEvszam() %> eves leszel.
Alternatív szintaxis
Két JSP szintaxis használatos: – –
Standard JSP: egyszer JSP XML-syntax: szabványos XML
scriptlet: <jsp:scriptlet> .. comment: direktíva: <jsp:directive.page .. /> kifejezés: <jsp:expression> ..
JSTL : szabványos elemekkel Custom TagLib: egyedi elemekkel
JSTL -ek: Core, XML, Internationalization, SQL, Functions
Unified Expression Language (EL)
A JSP specifikációban definiált leíró nyelv Célja, dinamikusan kiértékelt kifejezések beillesztése a JSP szövegbe. Elemek attribútumába való behelyettesítéshez szükséges. pl.
...
Explicit és implicit objektumok hivatkozhatók
Implicit objektumok
pageContext: a lap végrehajtási kontextusa, további objektumok elérését szolgálja – – – –
servletContext: a lapból generált servlet kontextusa session: a session objektum request: a kérés objektum response: a válasz objektum
param: a kérés paramétereinek map-je paramValues: paraméter értékek tömbje header: http kérés fejrész paraméterek
Implicit objektumok
headerValues: http kérés fejrész paraméter értékek tömbje cookie: http-cookiek map-je initParam: servlet init paraméterek map-je Változó hatáskör objektumok: – – – –
pageScope: page hatáskör objektumainak map-je requestScope: kérés hatáskör objektumok map-je sessionScope: ülés hatáskör objektumok map-je applicationScope: alkalmazás hatáskör objektumok map-je