JSP-direktiivit
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) laajenee: Tätä attribuuttia käytetään laajentamaan (perimään) luokkaa, 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) Tuo: Tämä attribuutti on eniten käytetty attribuutti sivudirektiivin attribuuteissa. Sitä käytetään käskemään säilöä tuomaan muita Java-luokkia, rajapintoja, enumuksia jne. servlet-koodia luotaessa.Se on samanlainen kuin Java-luokkien, rajapintojen tuontilausekkeet.
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) contentType:
- 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-direktiivi JSP" voidaan noutaa servlet-rajapinnalla käyttämällä getServletInfo()
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:
Koodirivit 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
Koodirivi 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
ulostulo:
- 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 Sisällytä ohje
- JSP:tä "sisällytä direktiivi" (koodirivi 8) käytetään sisällyttämään yksi tiedosto toiseen tiedostoon
- Tämä mukana oleva tiedosto voi olla HTML, JSP, tekstitiedostoja jne.
- Se on hyödyllinen myös luotaessa malleja käyttäjien näkymistä ja jakaa sivut ylä- ja alatunniste- ja sivupalkkitoimintoihin.
- Se sisältää tiedoston käännösvaiheessa
Sisällytä-direktiivin syntaksi:
<%@ include….%>
Esimerkiksi:
Direktiivi_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:
Koodirivi 3: Tässä koodissa käytämme include-tageja, joissa sisällytämme tiedoston direktiivi_header_jsp3.jsp päätiedostoon (_jsp2.jsp) ja saamme sekä päätiedoston että sisällytetyn tiedoston tulosteen.
Direktiivi_header_jsp3.jsp:
Koodirivit 11-12: Olemme ottaneet muuttujamäärän, joka on alustettu arvoon 1, ja sitten lisännyt sitä. Tämä antaa päätiedoston tulosteen alla olevan kuvan mukaisesti.
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:
Koodirivi 3: Tässä "taglib" määritellään attribuutilla uri ja etuliite.
Koodirivi 9: "gurutag" on mukautettu tunniste, joka on määritelty ja sitä voidaan käyttää missä tahansa