Dyrektywy JSP
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 się: 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) Importuj: Ten atrybut jest najczęściej używanym atrybutem w atrybutach dyrektyw strony. Służy do informowania kontenera, aby zaimportował inne klasy Java, interfejsy, wyliczenia itp. podczas generowania kodu serwletu. Działa podobnie do instrukcji importu w klasach i interfejsach Java.
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 treś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 Dyrektywa JSP” może zostać pobrany przez interfejs serwletu za pomocą funkcji 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:
Linia kodu 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
Linia kodu 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
Wydajność:
- Date to: bieżąca data przy użyciu metody date klasy date
2)Dyrektywa JSP Include
- „Dyrektywa dołączania” JSP (linia kodu 8) służy do dołączania jednego pliku do drugiego
- Ten dołączony plik może być plikiem HTML, JSP, plikami tekstowymi itp.
- Przydaje się również przy tworzeniu szablonów z widokami użytkownika i dzieleniu stron na akcje nagłówka i stopki oraz paska bocznego.
- Zawiera plik w fazie tłumaczenia
Składnia dyrektywy include:
<%@ include….%>
Przykład:
Dyrektywa_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:
Linia kodu 3: W tym kodzie używamy znaczników dołączania, gdzie dołączamy plik dyrektywa_nagłówek_jsp3.jsp do pliku głównego (_jsp2.jsp) i pobieramy dane wyjściowe zarówno z pliku głównego, jak i pliku dołączonego.
Dyrektywa_header_jsp3.jsp:
Linia kodu 11-12: Przyjęliśmy liczbę zmiennych zainicjowaną na 1, a następnie ją zwiększyliśmy. To da wynik w głównym pliku, 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:
Linia kodu 3: Tutaj „taglib” jest zdefiniowany za pomocą atrybutów uri i przedrostka.
Linia kodu 9: „gurutag” to zdefiniowany tag niestandardowy, którego można używać w dowolnym miejscu