Dyrektywy JSP
โก Inteligentne podsumowanie
Dyrektywy JSP to komunikaty wysyลane do kontenera JSP, ktรณre dostarczajฤ globalnych informacji o caลej stronie i instruujฤ jฤ podczas tลumaczenia na kod serwletu. Istniejฤ trzy typy dyrektyw: page, include i taglib, z ktรณrych kaลผda jest zapisywana w specjalnych znacznikach.

Czym sฤ dyrektywy JSP?
- Dyrektywy JSP to komunikaty kierowane do kontenera JSP. Dostarczajฤ globalnych informacji o caลej stronie JSP.
- Dyrektywy JSP sลuลผฤ do wydawania specjalnych instrukcji dla kontenera w celu translacji JSP na kod serwletu.
- W fazie cyklu ลผycia JSP naleลผy jฤ przekonwertowaฤ na serwlet, co jest fazฤ translacji.
- Dajฤ kontenerowi instrukcje dotyczฤ ce obsลugi niektรณrych aspektรณw przetwarzania JSP
- Dyrektywy mogฤ mieฤ wiele atrybutรณw oddzielonych przecinkami jako pary klucz-wartoลฤ.
- W JSP dyrektywa jest opisana w
<%@ %>tagi.
Skลadnia dyrektywy:
<%@ directive attribute="" %>
Typy dyrektyw w JSP
W JSP istniejฤ trzy typy dyrektyw:
- Dyrektywa strony
- Uwzglฤdnij dyrektywฤ
- Dyrektywa Taglib
Kaลผdy z nich zostaล szczegรณลowo opisany poniลผej wraz z przykลadami:
1) Dyrektywa strony JSP
Skลadnia dyrektywy Page:
<%@ pageโฆ%>
- Zapewnia atrybuty, ktรณre sฤ stosowane do caลej strony JSP.
- Definiuje atrybuty zaleลผne od strony, takie jak jฤzyk skryptowy, strona bลฤdรณw i wymagania dotyczฤ ce buforowania.
- Sลuลผy do dostarczania instrukcji do kontenera odnoszฤ cego siฤ do bieลผฤ cej strony JSP.
Poniลผej znajduje siฤ lista atrybutรณw powiฤ zanych z dyrektywฤ page:
- Wybierz jฤzyk
- Wydลuลผa siฤ
- import
- Typ zawartoลci
- Informacje
- Sesja
- jest ThreadSafe
- automatyczne spลukiwanie
- bufor
- IsErrorPage
- kodowanie strony
- Strona bลฤdu
- jest ELIignorowany
Wiฤcej szczegรณลรณw na temat kaลผdego atrybutu
1) jฤzyk: Definiuje jฤzyk programowania (jฤzyk podstawowy) uลผywany na stronie.
Skลadnia jฤzyka:
<%@ page language="value" %>
Tutaj wartoลciฤ jest jฤzyk programowania (jฤzyk podstawowy)
Przykลad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Wyjaลnienie kodu: W powyลผszym przykลadzie wartoลฤ jฤzyka atrybutu to Java ktรณry jest jฤzykiem podstawowym w tym przypadku. Dlatego kod w znacznikach wyraลผeล zostanie skompilowany przy uลผyciu kompilatora Java.
2) Rozszerza: Ten atrybut sลuลผy do rozszerzania (dziedziczenia) klasy, tak jak robi to JAVA
Skลadnia rozszerzeล:
<%@ page extends="value" %>
Tutaj wartoลฤ reprezentuje klasฤ, z ktรณrej ma zostaฤ odziedziczona.
Przykลad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
Wyjaลnienie kodu: W powyลผszym kodzie JSP rozszerza DemoClass znajdujฤ cy siฤ w pakiecie demotest i rozszerza wszystkie funkcje klasy.
3) Importowanie: Ten atrybut jest najczฤลciej uลผywany w atrybutach dyrektyw strony. Sลuลผy do nakazania kontenerowi importowania innych klas Java, interfejsรณw, typรณw wyliczeniowych itp. podczas generowania kodu serwletu. Jest on podobny do instrukcji importu w klasach Java i interfejsach.
Skลadnia importu:
<%@ page import="value" %>
Wartoลฤ ta wskazuje klasy, ktรณre naleลผy zaimportowaฤ.
Przykลad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" import="java.util.Date" pageEncoding="ISO-8859-1"%>
Wyjaลnienie kodu:
W powyลผszym kodzie importujemy klasฤ Date z pakietu java.util (wszystkie klasy narzฤdziowe) i moลผe ona uลผywaฤ wszystkich metod nastฤpujฤ cej klasy.
4) typ zawartoลci:
- Definiuje schemat kodowania znakรณw, tj. sลuลผy do ustawiania typu treลci i zestawu znakรณw odpowiedzi
- Domyลlnym typem contentType jest
"text/html; charset=ISO-8859-1".
Skลadnia typu treลci:
<%@ page contentType="value" %>
Przykลad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Wyjaลnienie kodu:
W powyลผszym kodzie typ zawartoลci jest ustawiony na tekst/html, ustawia kodowanie znakรณw dla JSP i wygenerowanej strony odpowiedzi.
5) informacja
- Definiuje ciฤ g znakรณw, do ktรณrego moลผna uzyskaฤ dostฤp za pomocฤ metody getServletInfo().
- Ten atrybut sลuลผy do ustawiania opisu serwletu.
Skลadnia informacji:
<%@ page info="value" %>
Tutaj wartoลฤ reprezentuje informacje o serwlecie.
Przykลad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Wyjaลnienie kodu:
W powyลผszym kodzie ciฤ g โGuru โDyrektywฤ JSPโ moลผna pobraฤ za pomocฤ interfejsu serwletu za pomocฤ getServletInfo()
6) Sesja
- Strona JSP domyลlnie tworzy sesjฤ.
- Czasami nie potrzebujemy, aby sesja byลa tworzona w JSP, dlatego w takim przypadku moลผemy ustawiฤ ten atrybut na false. Domyลlna wartoลฤ atrybutu session to true, a sesja jest tworzona. Gdy jest ustawiony na false, moลผemy wskazaฤ kompilatorowi, aby domyลlnie nie tworzyล sesji.
Skลadnia sesji:
<%@ page session="true/false"%>
W tym przypadku atrybut sesji moลผna ustawiฤ na wartoลฤ true lub false
Przykลad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="false"%>
Wyjaลnienie kodu:
W powyลผszym przykลadzie atrybut sesji jest ustawiony na โfalseโ, dlatego wskazujemy, ลผe nie chcemy tworzyฤ ลผadnej sesji na tej stronie JSP
7) jest ThreadSafe:
- Definiuje model wฤ tkรณw dla wygenerowanego serwletu.
- Wskazuje poziom bezpieczeลstwa wฤ tkรณw zastosowany na stronie.
- Jego domyลlna wartoลฤ to prawda, wiฤc jednoczeลnie
- Moลผemy uลผyฤ tego atrybutu do zaimplementowania interfejsu SingleThreadModel w wygenerowanym serwlecie.
- Jeลli ustawimy tฤ opcjฤ na false, zaimplementuje SingleThreadModel i bฤdzie mรณgล uzyskaฤ dostฤp do wszelkich wspรณลdzielonych obiektรณw, co moลผe spowodowaฤ niespรณjnoลฤ.
Skลadnia isThreadSafe:
<% @ page isThreadSafe="true/false" %>
Tutaj prawda lub faลsz oznacza, ลผe โโjeลli synchronizacja wystฤpuje, ustaw jฤ jako prawdฤ i jako faลsz.
Przykลad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isThreadSafe="true"%>
Wyjaลnienie kodu:
W powyลผszym kodzie isThreadSafe jest ustawione na โtrueโ, co spowoduje wykonanie synchronizacji i umoลผliwi uลผycie wielu wฤ tkรณw.
8) Automatyczne pลukanie:
Ten atrybut okreลla, czy buforowane wyjลcie powinno byฤ oprรณลผniane automatycznie, czy nie, a domyลlna wartoลฤ tego atrybutu to true. Jeลli wartoลฤ jest ustawiona na false, bufor nie zostanie oprรณลผniony automatycznie, a jeลli jest peลny, otrzymamy wyjฤ tek. Jeลli bufor jest rรณwny none, false jest nieuprawnione i nie ma buforowania, wiฤc zostanie oprรณลผniony automatycznie.
Skลadnia autoFlush:
<% @ page autoFlush="true/false" %>
Tutaj prawda/faลsz oznacza, czy buforowanie ma byฤ wykonane, czy nie.
Przykลad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
Wyjaลnienie kodu:
W powyลผszym kodzie opcja autoflush jest ustawiona na false, co oznacza, ลผe โโbuforowanie nie zostanie wykonane i konieczne bฤdzie rฤczne oprรณลผnienie wyjลcia.
9) Buffer:
- Za pomocฤ tego atrybutu obiekt odpowiedzi wyjลciowej moลผe byฤ buforowany.
- Za pomocฤ tego atrybutu moลผemy zdefiniowaฤ rozmiar buforowania. Domyลlny rozmiar to 8 KB.
- Poleca serwletowi zapisanie bufora przed zapisaniem do obiektu odpowiedzi.
Skลadnia bufora:
<%@ page buffer="value" %>
Tutaj wartoลฤ reprezentuje rozmiar bufora, ktรณry musi zostaฤ zdefiniowany. Jeลli nie ma bufora, moลผemy zapisaฤ jako none, a jeลli nie podajemy ลผadnej wartoลci, to domyลlnie jest to 8 KB
Przykลad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
Wyjaลnienie kodu:
W powyลผszym kodzie rozmiar bufora podano jako 16 KB, przy czym bufor miaลby taki rozmiar
10) isErrorPage:
- Wskazuje, ลผe strona JSP zawierajฤ ca stronฤ bลฤdu zostanie sprawdzona na innej stronie JSP
- Kaลผdy plik JSP zadeklarowany z atrybutem โisErrorPageโ moลผe wรณwczas otrzymywaฤ wyjฤ tki od innych stron JSP, ktรณre zawierajฤ strony bลฤdรณw.
- Wyjฤ tki sฤ dostฤpne tylko dla tych stron.
- Wartoลฤ domyลlna to faลsz.
Skลadnia isErrorPage:
<%@ page isErrorPage="true/false"%>
Przykลad:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isErrorPage="true"%>
Wyjaลnienie kodu:
W powyลผszym kodzie isErrorPage ma wartoลฤ true. Dlatego sprawdzi, czy inne strony JSP majฤ zestaw atrybutรณw errorPage (opisany w nastฤpnym atrybucie) i czy obsลugujฤ wyjฤ tki.
11) Kodowanie strony:
Atrybut โpageEncodingโ definiuje kodowanie znakรณw dla strony JSP. Domyลlnie jest okreลlone jako โISO-8859-1โ, jeลli nie okreลlono innego.
Skลadnia pageEncoding:
<%@ page pageEncoding="vaue" %>
Tutaj wartoลฤ okreลla wartoลฤ zestawu znakรณw dla JSP
Przykลad:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isErrorPage="true"%>
Wyjaลnienie kodu:
W powyลผszym kodzie โpageEncodingโ zostaลo ustawione na domyลlny zestaw znakรณw ISO-8859-1
12) Strona bลฤdu:
Ten atrybut sลuลผy do ustawiania strony bลฤdu dla strony JSP, jeลli JSP zgลosi wyjฤ tek, a nastฤpnie przekieruje na stronฤ wyjฤ tku.
Skลadnia strony bลฤdu:
<%@ page errorPage="value" %>
Tutaj wartoลฤ reprezentuje wartoลฤ strony JSP bลฤdu
Przykลad:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%>
Wyjaลnienie kodu:
W powyลผszym kodzie do obsลugi wyjฤ tkรณw mamy errroHandler.jsp
13) jest ELIgnorowany:
- IsELIgnored to atrybut flagi, przy ktรณrym musimy zdecydowaฤ, czy ignorowaฤ znaczniki EL, czy nie.
- Jego typ danych to wyliczenie Java, a wartoลฤ domyลlna to false, dlatego domyลlnie wลฤ czona jest funkcja EL.
Skลadnia isELIgnored:
<%@ page isELIgnored="true/false" %>
Tutaj prawda/faลsz reprezentuje wartoลฤ EL, niezaleลผnie od tego, czy naleลผy jฤ zignorowaฤ, czy nie.
Przykลad:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="true"%>
Wyjaลnienie kodu:
W powyลผszym kodzie isELIgnored ma wartoลฤ true i dlatego Jฤzyk wyraลผeล (EL) jest tutaj ignorowany. W poniลผszym przykลadzie uลผywamy czterech atrybutรณw (linia kodu 1-2)
Przykลad z czterema atrybutami
<%@ 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>
Wyjaลnienie kodu:
Code Linia 1-2: Tutaj zdefiniowaliลmy cztery atrybuty, tj
- Jฤzyk: Jest ustawiony jako Java jako jฤzyk programowania
- contentType: ustaw jako tekst/html, aby poinformowaฤ kompilator, ลผe HTML musi byฤ sformatowany
- pageEncoding: w tym atrybucie ustawiony jest domyลlny zestaw znakรณw
- isELIgnored: Znacznik wyraลผenia jest faลszywy, dlatego nie jest ignorowany
Code Linia 3: Tutaj uลผyliลmy atrybutu importu i importujemy โklasฤ datyโ, z ktรณrej pochodzi Java util i staramy siฤ wyลwietliฤ w kodzie bieลผฤ cฤ datฤ.
Po wykonaniu powyลผszego kodu otrzymasz nastฤpujฤ cy wynik
Wyjลcie:
- Date to: bieลผฤ ca data przy uลผyciu metody date klasy date
2) Dyrektywa JSP Include
- Dyrektywa โincludeโ JSP (linia kodu 8) sลuลผy do doลฤ czania jednego pliku do drugiego
- Doลฤ czony plik moลผe byฤ w formacie HTML, JSP, pliku tekstowym itp.
- Przydaje siฤ rรณwnieลผ przy tworzeniu szablonรณw z widokami uลผytkownika i dzieleniu stron na nagลรณwki, stopki i akcje paska bocznego.
- Zawiera plik w fazie tลumaczenia
Skลadnia dyrektywy include:
<%@ includeโฆ.%>
Przykลad:
Directive_jsp2.jsp (Plik gลรณwny)
<%@ 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>
Dyrektywa_header_jsp3.jsp (ktรณry jest zawarty w pliku gลรณwnym)
<%@ 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>
Wyjaลnienie kodu:
Dyrektywa_jsp2.jsp:
Code Linia 3: W tym kodzie uลผywamy znacznikรณw include, w ktรณrych doลฤ czamy plik directive_header_jsp3.jsp do pliku gลรณwnego (_jsp2.jsp) i pobieramy dane wyjลciowe zarรณwno z pliku gลรณwnego, jak i doลฤ czonego.
Dyrektywa_header_jsp3.jsp:
Code Linia 11-12: Wziฤliลmy zmiennฤ count zainicjowanฤ wartoลciฤ 1, a nastฤpnie jฤ zwiฤkszyliลmy. Spowoduje to wyลwietlenie wyniku w pliku gลรณwnym, jak pokazano poniลผej.
Po wykonaniu powyลผszego kodu otrzymasz nastฤpujฤ cy wynik:
Wyjลcie:
- Dane wyjลciowe to plik nagลรณwkowy: 2: To jest plik gลรณwny
- Dane wyjลciowe sฤ wykonywane z pliku dyrektywa_jsp2.jsp, podczas gdy doลฤ czony plik dyrektywa_header_jsp3.jsp zostanie skompilowany jako pierwszy.
- Po zakoลczeniu doลฤ czania pliku wykonywany jest plik gลรณwny, a dane wyjลciowe bฤdฤ pochodziฤ z pliku gลรณwnego โTo jest plik gลรณwnyโ. Otrzymasz wiฤc wynik jako โPlik nagลรณwkowy: 2โ z _jsp3.jsp i โTo jest plik gลรณwnyโ z _jsp2.jsp.
3) Dyrektywa JSP Taglib
- Dyrektywa taglib JSP sลuลผy do zdefiniowania biblioteki znacznikรณw z przedrostkiem โtaglibโ, w ktรณrej moลผemy uลผyฤ JSP.
- Wiฤcej szczegรณลรณw zostanie opisanych w sekcji Niestandardowe tagi JSP
- Dyrektywa taglib JSP jest uลผywana na stronach JSP przy uลผyciu standardowych bibliotek znacznikรณw JSP
- Wykorzystuje zestaw niestandardowych tagรณw, identyfikuje lokalizacjฤ biblioteki i zapewnia ลrodki identyfikacji niestandardowych tagรณw na stronie JSP.
Skลadnia dyrektywy taglib:
<%@ taglib uri="uri" prefix="value"%>
Tutaj atrybut โuriโ jest unikalnym identyfikatorem w deskryptorze biblioteki tagรณw, a atrybut โprefixโ jest nazwฤ tagu.
Przykลad:
<%@ 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>
Wyjaลnienie kodu:
Code Linia 3: Tutaj โtaglibโ jest zdefiniowany za pomocฤ atrybutรณw uri i przedrostka.
Code Linia 9: โgurutagโ to zdefiniowany tag niestandardowy, ktรณrego moลผna uลผywaฤ w dowolnym miejscu


