JSP-direktiivit
โก รlykรคs yhteenveto
JSP-direktiivit ovat JSP-sรคilรถlle lรคhetettyjรค viestejรค, jotka tarjoavat globaalia tietoa koko sivusta ja ohjeistavat sitรค servlet-koodiksi muuntamisen aikana. Direktiivityyppejรค on kolme: page, include ja taglib, jotka kaikki kirjoitetaan erityisten tagien sisรครคn.

Mitรค ovat JSP-direktiivit?
- JSP-kรคskyt ovat viestejรค JSP-sรคilรถรถn. Ne tarjoavat maailmanlaajuisia tietoja koko JSP-sivusta.
- JSP-kรคskyjรค kรคytetรครคn antamaan erityisohjeita sรคilรถlle JSP:n kรครคntรคmiseksi servlet-koodiksi.
- JSP-elinkaarivaiheessa JSP on muutettava servletiksi, joka on kรครคnnรถsvaihe.
- Ne antavat sรคilรถlle ohjeita siitรค, kuinka kรคsitellรค tiettyjรค JSP-kรคsittelyn nรคkรถkohtia
- Direktiiveillรค voi olla monia pilkuilla erotettuja attribuutteja avain-arvo-pareina.
- JSP:ssรค direktiivi on kuvattu kohdassa
<%@ %>tunnisteita.
Direktiivin syntaksi:
<%@ directive attribute="" %>
JSP:n direktiivityypit
JSP:ssรค on kolmenlaisia โโdirektiivejรค:
- Sivun direktiivi
- Sisรคllytรค ohje
- Taglib-direktiivi
Jokainen niistรค on kuvattu yksityiskohtaisesti alla esimerkein:
1) JSP-sivudirektiivi
Sivudirektiivin syntaksi:
<%@ pageโฆ%>
- Se tarjoaa mรครคritteitรค, joita sovelletaan koko JSP-sivulle.
- Se mรครคrittelee sivusta riippuvat attribuutit, kuten komentosarjakielen, virhesivun ja puskurointivaatimukset.
- Sitรค kรคytetรครคn antamaan ohjeita sรคilรถlle, joka liittyy nykyiseen JSP-sivuun.
Seuraavassa on luettelo sivudirektiiviin liittyvistรค mรครคritteistรค:
- Kieli
- ulottuu
- Tuo
- sisรคltรถtyyppi
- tiedot
- Istunto
- isThreadSafe
- automaattinen huuhtelu
- puskuri
- IsErrorPage
- sivun koodaus
- virhesivu
- on ELIgonoroitu
Lisรคtietoja kustakin mรครคritteestรค
1) kieli: Se mรครคrittelee ohjelmointikieli (taustakieli), jota kรคytetรครคn sivulla.
Kielen syntaksi:
<%@ page language="value" %>
Tรคssรค arvo on ohjelmointikieli (taustakieli)
Esimerkiksi:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Koodin selitys: Yllรค olevassa esimerkissรค attribuutin kieliarvo on Java joka on tรคssรค tapauksessa taustalla oleva kieli. Nรคin ollen lauseketunnisteiden koodi kรครคnnetรครคn Java-kรครคntรคjรคllรค.
2) Laajentaa: Tรคtรค attribuuttia kรคytetรครคn luokan perimiseen (laajentamiseen) kuten JAVA tekee.
Laajennusten syntaksi:
<%@ page extends="value" %>
Tรคssรค arvo edustaa luokkaa, josta se on perittรคvรค.
Esimerkiksi:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
Koodin selitys: Yllรค olevassa koodissa JSP laajentaa DemoClassia, joka on demotest-paketissa, ja se laajentaa kaikkia luokan ominaisuuksia.
3) Tuonti: Tรคtรค attribuuttia kรคytetรครคn eniten sivudirektiivien attribuuteissa. Sitรค kรคytetรครคn kรคskemรครคn sรคilรถรค tuomaan muita Java-luokkia, rajapintoja, luetteloita jne. servlet-koodia luotaessa. Se on samanlainen kuin import-lausekkeet Java-luokissa ja rajapinnoissa.
Tuonnin syntaksi:
<%@ page import="value" %>
Tรคssรค arvo ilmaisee luokat, jotka on tuotava.
Esimerkiksi:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" import="java.util.Date" pageEncoding="ISO-8859-1"%>
Koodin selitys:
Yllรค olevassa koodissa tuomme Date-luokan java.util-paketista (kaikki apuohjelmaluokat), ja se voi kรคyttรครค kaikkia seuraavan luokan menetelmiรค.
4) sisรคllรถn tyyppi:
- Se mรครคrittelee merkistรถkoodausmallin eli sitรค kรคytetรครคn asettamaan sisรคltรถtyyppi ja vastauksen merkistรถ
- ContentType-oletustyyppi on
"text/html; charset=ISO-8859-1".
ContentTypen syntaksi:
<%@ page contentType="value" %>
Esimerkiksi:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Koodin selitys:
Yllรค olevassa koodissa sisรคltรถtyypiksi on asetettu teksti/html, se asettaa merkkikoodauksen JSP:lle ja luodulle vastaussivulle.
5) tiedot
- Se mรครคrittelee merkkijonon, jota voidaan kรคyttรครค getServletInfo()-menetelmรคllรค.
- Tรคtรค attribuuttia kรคytetรครคn mรครคrittรคmรครคn servlet-kuvaus.
Tietojen syntaksi:
<%@ page info="value" %>
Tรคssรค arvo edustaa servlet-tietoja.
Esimerkiksi:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Koodin selitys:
Yllรค olevassa koodissa merkkijono โGuru Directive JSPโ voidaan hakea servlet-rajapinnalla kรคyttรคmรคllรค getServletInfo()-funktiota.
6) Istunto
- JSP-sivu luo istunnon oletuksena.
- Joskus meidรคn ei tarvitse luoda istuntoa JSP:ssรค, joten voimme asettaa tรคmรคn mรครคritteen arvoon false siinรค tapauksessa. Istuntomรครคritteen oletusarvo on tosi, ja istunto luodaan. Kun se on asetettu arvoon false, voimme ilmoittaa kรครคntรคjรคlle, ettei se luo istuntoa oletuksena.
Istunnon syntaksi:
<%@ page session="true/false"%>
Tรคssรค tapauksessa istuntoattribuutti voidaan asettaa arvoon true tai false
Esimerkiksi:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="false"%>
Koodin selitys:
Yllรค olevassa esimerkissรค istuntoattribuutti on asetettu arvoon "false", joten osoitamme, ettรค emme halua luoda istuntoa tรคssรค JSP:ssรค.
7) isThreadSafe:
- Se mรครคrittรครค luodulle servletille sรคikeitysmallin.
- Se ilmaisee sivulla toteutetun sรคikeen turvallisuuden tason.
- Sen oletusarvo on tosi eli samanaikaisesti
- Voimme kรคyttรครค tรคtรค attribuuttia SingleThreadModel-liittymรคn toteuttamiseen luodussa servletissรค.
- Jos asetamme sen arvoon false, se toteuttaa SingleThreadModelin ja voi kรคyttรครค kaikkia jaettuja objekteja ja voi aiheuttaa epรคjohdonmukaisuutta.
IsThreadSafe-syntaksi:
<% @ page isThreadSafe="true/false" %>
Tรคssรค tosi tai epรคtosi edustaa, jos synkronointi on olemassa, aseta se sitten tosi ja epรคtosi.
Esimerkiksi:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isThreadSafe="true"%>
Koodin selitys:
Yllรค olevassa koodissa isThreadSafe on asetettu arvoon "true", joten synkronointi suoritetaan ja useita sรคiettรค voidaan kรคyttรครค.
8) AutoFlush:
Tรคmรค attribuutti mรครคrittรครค, ettรค puskuroitu tulos tulee tyhjentรครค automaattisesti vai ei, ja tรคmรคn mรครคritteen oletusarvo on tosi. Jos arvoksi on asetettu false, puskuria ei tyhjennetรค automaattisesti ja jos se on tรคynnรค, saamme poikkeuksen. Kun puskuria ei ole, false on laiton, eikรค puskurointia ole, joten se tyhjennetรครคn automaattisesti.
AutoFlushin syntaksi:
<% @ page autoFlush="true/false" %>
Tรคssรค tosi/epรคtosi ilmaisee, onko puskurointi tehtรคvรค vai ei
Esimerkiksi:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
Koodin selitys:
Yllรค olevassa koodissa automaattinen huuhtelu on asetettu arvoon false, joten puskurointia ei tehdรค, ja se on huuhdellut manuaalisesti.
9) Buffer:
- Tรคtรค attribuuttia kรคyttรคmรคllรค lรคhtรถvastausobjekti voidaan puskuroida.
- Voimme mรครคrittรครค puskuroinnin koon tรคllรค mรครคritteellรค ja oletuskoko on 8 kt.
- Se ohjaa servletin kirjoittamaan puskuriin ennen kirjoittamista vastausobjektiin.
Puskurin syntaksi:
<%@ page buffer="value" %>
Tรคssรค arvo edustaa mรครคritettรคvรคn puskurin kokoa. Jos puskuria ei ole, voimme kirjoittaa kuin ei mitรครคn, ja jos emme mainitse arvoa, oletusarvo on 8 kt
Esimerkiksi:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
Koodin selitys:
Yllรค olevassa koodissa puskurin kooksi mainitaan 16 kt, jolloin puskuri olisi tรคmรคn kokoinen
10) isErrorPage:
- Se osoittaa, ettรค JSP-sivu, jossa on errorPage, tarkistetaan toiselta JSP-sivulta
- Mikรค tahansa "isErrorPage"-attribuutilla ilmoitettu JSP-tiedosto pystyy sitten vastaanottamaan poikkeuksia muilta JSP-sivuilta, joilla on virhesivuja.
- Poikkeukset ovat vain nรคillรค sivuilla.
- Oletusarvo on false.
IsErrorPagen syntaksi:
<%@ page isErrorPage="true/false"%>
Esimerkiksi:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isErrorPage="true"%>
Koodin selitys:
Yllรค olevassa koodissa isErrorPage on tosi. Siksi se tarkistaa, ettรค kaikilla muilla JSP:illรค on errorPage-attribuutti (kuvattu seuraavassa mรครคritteessรค) ja se pystyy kรคsittelemรครคn poikkeuksia.
11) Sivukoodaus:
Attribuutti pageEncoding mรครคrittรครค JSP-sivun merkkikoodauksen. Oletusarvo on "ISO-8859-1", jos muuta ei ole mรครคritetty.
Sivun koodauksen syntaksi:
<%@ page pageEncoding="vaue" %>
Tรคssรค arvo mรครคrittรครค JSP:n merkkijoukon arvon
Esimerkiksi:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isErrorPage="true"%>
Koodin selitys:
Yllรค olevassa koodissa "pageEncoding" on asetettu oletusarvoksi ISO-8859-1
12) virhesivu:
Tรคtรค mรครคritettรค kรคytetรครคn mรครคrittรคmรครคn JSP-sivun virhesivu, jos JSP heittรครค poikkeuksen ja sitten uudelleenohjaa poikkeussivulle.
Virhesivun syntaksi:
<%@ page errorPage="value" %>
Tรคssรค arvo edustaa virheen JSP-sivun arvoa
Esimerkiksi:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%>
Koodin selitys:
Yllรค olevassa koodissa poikkeuksien kรคsittelemiseksi meillรค on errroHandler.jsp
13) ohitetaan:
- IsELIgnored on lippuattribuutti, jossa meidรคn on pรครคtettรคvรค, jรคtetรครคnkรถ EL-tunnisteet huomiotta vai ei.
- Sen tietotyyppi on java enum, ja oletusarvo on false, joten EL on oletuksena kรคytรถssรค.
Kohteen isELIgnored syntaksi:
<%@ page isELIgnored="true/false" %>
Tรคssรค tosi/epรคtosi edustaa EL:n arvoa riippumatta siitรค, pitรคisikรถ se jรคttรครค huomiotta vai ei.
Esimerkiksi:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="true"%>
Koodin selitys:
Yllรค olevassa koodissa isELIgnored on tosi ja siten Ilmaisukieli (EL) jรคtetรครคn tรคssรค huomiotta. Alla olevassa esimerkissรค kรคytรคmme neljรครค attribuuttia (koodirivi 1-2)
Esimerkki neljรคllรค attribuutilla
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="false"%> <%@page import="java.util.Date" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Directive Guru JSP1</title> </head> <body> <a>Date is:</a> <%= new java.util.Date() %> </body> </html>
Koodin selitys:
Code Rivi 1โ2: Tรคssรค olemme mรครคrittรคneet neljรค attribuuttia, esim
- Kieli: Se on asetettu muotoon Java ohjelmointikielenรค
- contentType: aseta tekstiksi/html:ksi kertoaksesi kรครคntรคjรคlle, ettรค html:n on oltava muotoiltu
- pageEncoding: oletusmerkkisarja on asetettu tรคhรคn mรครคritteeseen
- isELIgnored: Lauseketunniste on epรคtosi, joten sitรค ei jรคtetรค huomiotta
Code Rivi 3: Tรครคllรค olemme kรคyttรคneet tuonti-attribuuttia, ja se tuo "Date class", joka on perรคisin Java util-paketti, ja yritรคmme nรคyttรครค nykyisen pรคivรคmรครคrรคn koodissa.
Kun suoritat yllรค olevan koodin, saat seuraavan tulosteen
lรคhtรถ:
- Pรคivรคmรครคrรค on: Nykyinen pรคivรคmรครคrรค kรคyttรคen pรคivรคmรครคrรคluokan pรคivรคmรครคrรคmenetelmรครค
2) JSP Include -direktiivi
- JSP:n โsisรคllytysdirektiiviรคโ (koodirivi 8) kรคytetรครคn yhden tiedoston sisรคllyttรคmiseen toiseen tiedostoon
- Tรคmรค sisรคllytetty tiedosto voi olla HTML-, JSP- tai tekstitiedosto jne.
- Se on hyรถdyllinen myรถs kรคyttรคjรคnรคkymiรค sisรคltรคvien mallien luomisessa ja sivujen jakamisessa ylรค- ja alatunnisteisiin sekรค sivupalkin toimintoihin.
- Se sisรคltรครค tiedoston kรครคnnรถsvaiheessa
Sisรคllytรค-direktiivin syntaksi:
<%@ includeโฆ.%>
Esimerkiksi:
Directive_jsp2.jsp (Pรครคtiedosto)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ include file="directive_header_jsp3.jsp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Directive JSP2</title> </head> <body> <a>This is the main file</a> </body> </html>
Direktiivi_header_jsp3.jsp (joka sisรคltyy pรครคtiedostoon)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> </head> <body> <a>Header file : </a> <%int count =1; count++; out.println(count);%> : </body> </html>
Koodin selitys:
Direktiivi_jsp2.jsp:
Code Rivi 3: Tรคssรค koodissa kรคytรคmme include-tageja, joissa lisรครคmme tiedoston directive_header_jsp3.jsp pรครคtiedostoon (_jsp2.jsp) ja saamme sekรค pรครคtiedoston ettรค sisรคllytetyn tiedoston tulosteen.
Direktiivi_header_jsp3.jsp:
Code Rivi 11โ12: Olemme ottaneet muuttujan count, joka on alustettu arvoon 1 ja sitten kasvattanut sitรค. Tรคmรค antaa pรครคtiedostoon alla olevan mukaisen tulosteen.
Kun suoritat yllรค olevan koodin, saat seuraavan tulosteen:
lรคhtรถ:
- Tulos on otsikkotiedosto: 2: Tรคmรค on pรครคtiedosto
- Tulos suoritetaan direktiivi_jsp2.jsp-tiedostosta, kun taas direktiivi_header_jsp3.jsp-tiedosto kรครคnnetรครคn ensin.
- Kun mukana oleva tiedosto on valmis, pรครคtiedosto suoritetaan ja tuloste tulee pรครคtiedostosta "Tรคmรค on pรครคtiedosto". Joten saat tulosteen muodossa "Otsikkotiedosto: 2" tiedostosta _jsp3.jsp ja "Tรคmรค on pรครคtiedosto" tiedostosta _jsp2.jsp.
3) JSP Taglib -direktiivi
- JSP taglib -direktiiviรค kรคytetรครคn mรครคrittรคmรครคn tunnistekirjasto, jonka etuliite on "taglib", jota voimme kรคyttรครค JSP.
- Lisรคtietoja kรคsitellรครคn JSP Custom Tags -osiossa
- JSP taglib -direktiiviรค kรคytetรครคn JSP-sivuilla kรคyttรคmรคllรค JSP-standardin tunnistekirjastoja
- Se kรคyttรครค joukko mukautettuja tunnisteita, tunnistaa kirjaston sijainnin ja tarjoaa keinot tunnistaa mukautetut tunnisteet JSP-sivulla.
Taglib-direktiivin syntaksi:
<%@ taglib uri="uri" prefix="value"%>
Tรคssรค "uri"-attribuutti on yksilรถllinen tunniste tunnistekirjaston kuvauksessa ja "etuliite"-attribuutti on tunnisteen nimi.
Esimerkiksi:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="gurutag" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Directive JSP</title> <gurutag:hello/> </head> <body> </body> </html>
Koodin selitys:
Code Rivi 3: Tรคssรค "taglib" mรครคritellรครคn attribuutilla uri ja etuliite.
Code Rivi 9: "gurutag" on mukautettu tunniste, joka on mรครคritelty ja sitรค voidaan kรคyttรครค missรค tahansa


