JSP direktive
Što su JSP direktive?
- JSP direktive su poruke za JSP spremnik. Oni pružaju globalne informacije o cijeloj JSP stranici.
- JSP direktive koriste se za davanje posebnih uputa spremniku za prijevod JSP-a u kod servleta.
- U fazi životnog ciklusa JSP-a, JSP se mora pretvoriti u servlet koji je faza prevođenja.
- Oni daju upute spremniku o tome kako postupati s određenim aspektima JSP obrade
- Direktive mogu imati mnogo atributa odvojenih zarezima kao parovi ključ-vrijednost.
- U JSP-u, direktiva je opisana u
<%@ %>
oznake.
Sintaksa direktive:
<%@ directive attribute="" %>
Vrste direktiva u JSP-u
Postoje tri vrste direktiva u JSP-u:
- Stranica direktiva
- Uključi direktivu
- Taglib direktiva
Svaki od njih je detaljno opisan u nastavku s primjerima:
1) Direktiva JSP stranice
Sintaksa direktive Page:
<%@ page…%>
- Omogućuje atribute koji se primjenjuju na cijelu JSP stranicu.
- Definira atribute ovisne o stranici, kao što su skriptni jezik, stranica s pogreškom i zahtjevi za međuspremnik.
- Koristi se za pružanje uputa spremniku koji se odnosi na trenutnu JSP stranicu.
Slijedi njegov popis atributa povezanih s direktivom stranice:
- Jezik
- Proširuje
- uvoz
- contentType
- info
- Sjednica
- isThreadSafe
- automatsko ispiranje
- tampon
- IsErrorPage
- pageEncoding
- Stranica pogreške
- jeELIgonoran
Više detalja o svakom atributu
1) jezik: Definira programski jezik (temeljni jezik) koji se koristi na stranici.
Sintaksa jezika:
<%@ page language="value" %>
Ovdje je vrijednost programski jezik (temeljni jezik)
Primjer:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Objašnjenje koda: U gornjem primjeru vrijednost atributa jezika je Java koji je u ovom slučaju temeljni jezik. Stoga bi se kod u izraznim oznakama preveo pomoću java prevoditelja.
2) Proširuje se: Ovaj se atribut koristi za proširenje (nasljeđivanje) klase kao što to čini JAVA
Sintaksa proširenja:
<%@ page extends="value" %>
Ovdje vrijednost predstavlja klasu iz koje se mora naslijediti.
Primjer:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
Objašnjenje koda: U gornjem kodu JSP proširuje DemoClass koji je unutar demotest paketa i proširit će sve značajke klase.
3) Uvoz: Ovaj atribut je najčešće korišteni atribut u atributima direktive stranice. Koristi se da se spremniku kaže da uveze druge java klase, sučelja, enumove, itd. dok generira kod servleta. Sličan je uvoznim izjavama u java klasama, sučeljima.
Sintaksa uvoza:
<%@ page import="value" %>
Ovdje vrijednost označava klase koje se moraju uvesti.
Primjer:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" import="java.util.Date" pageEncoding="ISO-8859-1"%>
Objašnjenje koda:
U gornjem kodu uvozimo klasu Date iz paketa java.util (sve uslužne klase) i može koristiti sve metode sljedeće klase.
4) contentType:
- Definira shemu kodiranja znakova, tj. koristi se za postavljanje vrste sadržaja i skupa znakova odgovora
- Zadana vrsta contentType je
"text/html; charset=ISO-8859-1"
.
Sintaksa contentType:
<%@ page contentType="value" %>
Primjer:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Objašnjenje koda:
U gornjem kodu, vrsta sadržaja postavljena je kao text/html, postavlja kodiranje znakova za JSP i za generiranu stranicu odgovora.
5) informacije
- Definira niz kojem se može pristupiti metodom getServletInfo().
- Ovaj atribut se koristi za postavljanje opisa servleta.
Sintaksa informacija:
<%@ page info="value" %>
Ovdje vrijednost predstavlja informacije o servletu.
Primjer:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Objašnjenje koda:
U gornjem kodu, niz "Guru Directive JSP" može se dohvatiti sučeljem servleta pomoću getServletInfo()
6) Sjednica
- JSP stranica prema zadanim postavkama stvara sesiju.
- Ponekad ne trebamo kreirati sesiju u JSP-u, pa stoga u tom slučaju možemo postaviti ovaj atribut na false. Zadana vrijednost atributa sesije je istinita i sesija je stvorena. Kada je postavljeno na false, tada možemo naznačiti kompajleru da ne stvara sesiju prema zadanim postavkama.
Sintaksa sesije:
<%@ page session="true/false"%>
Ovdje u ovom slučaju atribut sesije može se postaviti na true ili false
Primjer:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="false"%>
Objašnjenje koda:
U gornjem primjeru, atribut sesije postavljen je na "false" stoga pokazujemo da ne želimo stvoriti nikakvu sesiju u ovom JSP-u
7) isThreadSafe:
- On definira model niti za generirani servlet.
- Označava razinu sigurnosti niti implementiranu na stranici.
- Njegova zadana vrijednost je istinita tako da simultano
- Ovaj atribut možemo koristiti za implementaciju sučelja SingleThreadModel u generirani servlet.
- Ako ga postavimo na false, tada će implementirati SingleThreadModel i moći će pristupiti svim zajedničkim objektima i može izazvati nedosljednost.
Sintaksa isThreadSafe:
<% @ page isThreadSafe="true/false" %>
Ovdje true ili false predstavlja ako postoji sinkronizacija, tada postavite kao true i postavite je kao false.
Primjer:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isThreadSafe="true"%>
Objašnjenje koda:
U gornjem kodu, isThreadSafe je postavljen na "true" stoga će se izvršiti sinkronizacija i može se koristiti više niti.
8) Automatsko ispiranje:
Ovaj atribut specificira da se izlaz u međuspremniku treba isprati automatski ili ne, a zadana vrijednost tog atributa je istina. Ako je vrijednost postavljena na false, međuspremnik se neće automatski isprazniti, a ako je pun, dobit ćemo iznimku. Kada je međuspremnik nijedan, tada je false nelegitiman i nema međuspremnika, pa će se automatski isprati.
Sintaksa za autoFlush:
<% @ page autoFlush="true/false" %>
Ovdje istinito/netočno predstavlja treba li se napraviti međuspremnik ili ne
Primjer:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
Objašnjenje koda:
U gornjem kodu, autoflush je postavljen na false i stoga se neće izvršiti spremanje u međuspremnik i mora ručno isprati izlaz.
9) Buffer:
- Korištenjem ovog atributa objekt izlaznog odgovora može se spremiti u međuspremnik.
- Pomoću ovog atributa možemo definirati veličinu međuspremnika, a zadana veličina je 8 KB.
- Usmjerava servlet da zapiše međuspremnik prije pisanja u objekt odgovora.
Sintaksa međuspremnika:
<%@ page buffer="value" %>
Ovdje vrijednost predstavlja veličinu međuspremnika koji treba definirati. Ako nema međuspremnika, možemo pisati kao nijedan, a ako ne spomenemo nikakvu vrijednost, zadana vrijednost je 8KB
Primjer:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
Objašnjenje koda:
U gornjem kodu, veličina međuspremnika spominje se kao 16 KB pri čemu bi međuspremnik bio te veličine
10) isErrorPage:
- Označava da će JSP stranica koja ima errorPage biti provjerena na drugoj JSP stranici
- Svaka JSP datoteka deklarirana s atributom "isErrorPage" tada može primati iznimke od drugih JSP stranica koje imaju stranice s pogreškom.
- Izuzeci su dostupni samo ovim stranicama.
- Zadana vrijednost je false.
Sintaksa isErrorPage:
<%@ page isErrorPage="true/false"%>
Primjer:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isErrorPage="true"%>
Objašnjenje koda:
U gornjem kodu, isErrorPage je postavljen kao true. Stoga će provjeriti da li svi drugi JSP-ovi imaju set atributa errorPage (opisan u sljedećem atributu) i mogu rukovati iznimkama.
11) Kodiranje stranice:
Atribut “pageEncoding” definira kodiranje znakova za JSP stranicu. Zadana postavka navedena je kao "ISO-8859-1" ako bilo koja druga nije navedena.
Sintaksa pageEncoding:
<%@ page pageEncoding="vaue" %>
Ovdje vrijednost specificira vrijednost skupa znakova za JSP
Primjer:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isErrorPage="true"%>
Objašnjenje koda:
U gornjem kodu “pageEncoding” je postavljen na zadani skup znakova ISO-8859-1
12) Stranica pogreške:
Ovaj se atribut koristi za postavljanje stranice s pogreškom za JSP stranicu ako JSP izbaci iznimku i zatim preusmjeri na stranicu s iznimkom.
Sintaksa stranice pogreške:
<%@ page errorPage="value" %>
Ovdje vrijednost predstavlja vrijednost JSP stranice pogreške
Primjer:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%>
Objašnjenje koda:
U gornjem kodu, za rukovanje iznimkama imamo errroHandler.jsp
13) isELIgnored:
- IsELIgnored je atribut zastave gdje moramo odlučiti hoćemo li zanemariti EL oznake ili ne.
- Njegov tip podataka je java enum, a zadana vrijednost je lažna, stoga je EL omogućen prema zadanim postavkama.
Sintaksa isELIgnored:
<%@ page isELIgnored="true/false" %>
Ovdje istinito/netočno predstavlja vrijednost EL-a bez obzira treba li je zanemariti ili ne.
Primjer:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="true"%>
Objašnjenje koda:
U gornjem kodu isELIgnored je true i stoga Jezik izražavanja (EL) ovdje se zanemaruje. U primjeru u nastavku koristimo četiri atributa (redak koda 1-2)
Primjer s četiri atributa
<%@ 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>
Objašnjenje koda:
Redak koda 1-2: Ovdje smo definirali četiri atributa, tj
- Jezik: Postavljen je kao Java kao programski jezik
- contentType: postavite kao text/html da kažete kompajleru da html mora biti formatiran
- pageEncoding: zadani skup znakova postavljen je u ovom atributu
- isELIgnored: Oznaka izraza je netočna pa se ne zanemaruje
Redak koda 3: Ovdje smo upotrijebili atribut uvoza, a on uvozi “Datumsku klasu” koja je iz Java util paket, a mi pokušavamo prikazati trenutni datum u kodu.
Kada izvršite gornji kod, dobit ćete sljedeći izlaz
Izlaz:
- Datum je: trenutni datum korištenjem metode datuma klase datuma
2) JSP Include direktiva
- JSP "include directive" (codeline 8) koristi se za uključivanje jedne datoteke u drugu datoteku
- Ova uključena datoteka može biti HTML, JSP, tekstualne datoteke itd.
- Također je koristan u stvaranju predložaka s korisničkim prikazima i razbijanju stranica u radnje zaglavlja i podnožja te bočne trake.
- Uključuje datoteku tijekom faze prijevoda
Sintaksa direktive uključivanja:
<%@ include….%>
Primjer:
Directive_jsp2.jsp (Glavna datoteka)
<%@ 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>
Directive_header_jsp3.jsp (koji je uključen u glavnu datoteku)
<%@ 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>
Objašnjenje koda:
Directive_jsp2.jsp:
Redak koda 3: U ovom kodu koristimo oznake uključivanja gdje uključujemo datoteku directive_header_jsp3.jsp u glavnu datoteku (_jsp2.jsp) i dobivamo izlaz i glavne datoteke i uključene datoteke.
Directive_header_jsp3.jsp:
Redak koda 11-12: Uzeli smo broj varijabli inicijaliziran na 1 i zatim ga povećali. Ovo će dati izlaz u glavnoj datoteci kao što je prikazano u nastavku.
Kada izvršite gornji kod, dobit ćete sljedeći izlaz:
Izlaz:
- Izlaz je datoteka zaglavlja: 2 : Ovo je glavna datoteka
- Izlaz se izvodi iz datoteke directive_jsp2.jsp dok će se uključena datoteka directive_header_jsp3.jsp prvo kompajlirati.
- Nakon što je uključena datoteka gotova, glavna datoteka se izvršava, a izlaz će biti iz glavne datoteke "Ovo je glavna datoteka". Tako ćete dobiti izlaz kao "Datoteka zaglavlja: 2" iz _jsp3.jsp i "Ovo je glavna datoteka" iz _jsp2.jsp.
3) Direktiva JSP Taglib
- Direktiva JSP taglib koristi se za definiranje biblioteke oznaka s "taglib" kao prefiksom, koju možemo koristiti u JSP.
- Više pojedinosti bit će obrađeno u odjeljku JSP Custom Tags
- Direktiva JSP taglib koristi se na JSP stranicama koje koriste JSP standardne biblioteke oznaka
- Koristi skup prilagođenih oznaka, identificira lokaciju knjižnice i pruža sredstva za identificiranje prilagođenih oznaka na JSP stranici.
Sintaksa direktive taglib:
<%@ taglib uri="uri" prefix="value"%>
Ovdje je atribut "uri" jedinstveni identifikator u deskriptoru biblioteke oznaka, a atribut "prefix" je naziv oznake.
Primjer:
<%@ 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>
Objašnjenje koda:
Redak koda 3: Ovdje je "taglib" definiran atributima uri i prefiks.
Redak koda 9: "gurutag" je definirana prilagođena oznaka i može se koristiti bilo gdje