Co to są dyrektywy JSP?
- Dyrektywy JSP to komunikaty wysyłane do kontenera JSP. Dostarczają globalnych informacji o całej stronie JSP.
- Dyrektywy JSP służą do wydawania specjalnych instrukcji kontenerowi w celu przetłumaczenia strony JSP na kod serwletu.
- W fazie cyklu życia JSP, JSP musi zostać przekonwertowane na serwlet, który jest fazą translacji.
- Przekazują one 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 tagach <% @%>.
Składnia dyrektywy:
<%@ directive attribute %>
Istnieją trzy rodzaje dyrektyw:
- Dyrektywa strony
- Włącz dyrektywę
- Dyrektywa Taglib
Każdy z nich został szczegółowo opisany poniżej z przykładami:
W tym samouczku nauczysz się -
- Dyrektywa JSP Page
- Dyrektywa JSP Include
- Dyrektywa JSP Taglib
Dyrektywa JSP Page
Składnia dyrektywy Page:
<%@ page… %>
- Zawiera atrybuty, które są stosowane do całej strony JSP.
- Definiuje atrybuty zależne od strony, takie jak język skryptowy, strona błędu i wymagania dotyczące buforowania.
- Służy do dostarczania instrukcji do kontenera, który dotyczy bieżącej strony JSP.
Poniżej znajduje się lista atrybutów powiązanych z dyrektywą strony:
- Język
- Rozciąga się
- Import
- Typ zawartości
- info
- sesja
- isThreadSafe
- autoflush
- bufor
- IsErrorPage
- pageEncoding
- errorPage
- isELIgonored
Więcej szczegółów na temat każdego atrybutu
- język : określa język programowania (język bazowy) używany na stronie.
Składnia języka:
<%@ page language="value" %>
Tutaj wartością jest język programowania (język bazowy)
Przykład:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
Objaśnienie kodu: W powyższym przykładzie wartością języka atrybutu jest Java, która jest językiem bazowym w tym przypadku. W związku z tym kod w tagach wyrażeń zostałby skompilowany za pomocą kompilatora java.
- Rozszerzenia : 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, który jest w pakiecie demotest i rozszerzy wszystkie funkcje klasy.
- Import : Ten atrybut jest najczęściej używanym atrybutem w atrybutach dyrektywy strony. Służy do informowania kontenera, aby importował inne klasy java, interfejsy, wyliczenia itp. Podczas generowania kodu serwletu. Jest podobny do instrukcji importu w klasach java, interfejsach.
Składnia importu :
<%@ page import="value" %>
Tutaj wartość wskazuje klasy, które mają zostać zaimportowane.
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ędzi) i może ona wykorzystywać wszystkie metody poniższej klasy.
- contentType :
- Definiuje schemat kodowania znaków, tj. Służy do ustawiania typu treści i zestawu znaków odpowiedzi
- Domyślny typ contentType to „text / html; charset = ISO-8859-1”.
Składnia contentType:
<%@ 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 treści jest ustawiony jako text / html, ustawia kodowanie znaków dla JSP i dla wygenerowanej strony odpowiedzi.
- info
- Definiuje łańcuch, 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 dyrektywy JSP" może zostać pobrany przez interfejs serwletu przy użyciu metody getServletInfo ()
- Sesja
- Strona JSP domyślnie tworzy sesję.
- Czasami nie potrzebujemy tworzenia sesji na JSP, dlatego możemy w takim przypadku ustawić ten atrybut na false. Domyślną wartością atrybutu sesji jest true i sesja jest tworzona.
Gdy ma wartość 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 tym JSP
- isThreadSafe:
- Definiuje model wątkowania dla wygenerowanego serwletu.
- Wskazuje poziom bezpieczeństwa wątków zaimplementowany na stronie.
- Jego domyślną wartością jest prawda, a więc równoczesna
- Możemy użyć tego atrybutu do zaimplementowania interfejsu SingleThreadModel w wygenerowanym serwlecie.
- Jeśli ustawimy go na false, zaimplementuje SingleThreadModel i będzie mógł uzyskać dostęp do wszystkich udostępnionych obiektów i może spowodować niespójność.
Składnia isThreadSafe:
<% @ page isThreadSafe="true/false" %>
Tutaj prawda lub fałsz oznacza, że synchronizacja jest obecna, a następnie ustawia ją jako prawdę i ustawia 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”, dlatego synchronizacja zostanie wykonana i można użyć wielu wątków.
- AutoFlush:
Ten atrybut określa, że buforowane dane wyjściowe powinny być opróżniane automatycznie lub nie, a domyślną wartością tego atrybutu jest prawda.
Jeśli wartość jest ustawiona na false, bufor nie zostanie opróżniony automatycznie, a jeśli jest pełny, otrzymamy wyjątek.
Gdy bufor nie ma, to fałsz jest nieuzasadniony i nie ma buforowania, więc zostanie opróżniony automatycznie.
Składnia autoFlush:
<% @ page autoFlush="true/false" %>
Tutaj prawda / fałsz określa, czy buforowanie musi 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 autoflush jest ustawiony na false i dlatego buforowanie nie zostanie wykonane i ręcznie opróżni dane wyjściowe.
- Bufor:
- Za pomocą tego atrybutu wyjściowy obiekt odpowiedzi może być buforowany.
- Możemy zdefiniować rozmiar buforowania do wykonania za pomocą tego atrybutu, a domyślny rozmiar to 8KB.
- Nakazuje apletowi zapisanie bufora przed zapisaniem do obiektu odpowiedzi.
Składnia bufora:
<%@ page buffer="value" %>
Tutaj wartość reprezentuje rozmiar bufora, który ma zostać zdefiniowany. Jeśli nie ma bufora, możemy zapisać jako brak, a jeśli nie podamy żadnej wartości, domyślnie jest to 8KB
Przykład:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"buffer="16KB"%>
Wyjaśnienie kodu:
W powyższym kodzie rozmiar bufora jest wymieniony jako 16KB, przy czym bufor miałby taki rozmiar
- isErrorPage:
- Wskazuje, że strona JSP, która ma stronę errorPage, zostanie sprawdzona na innej stronie JSP
- Każdy plik JSP zadeklarowany z atrybutem „isErrorPage” może następnie odbierać wyjątki z innych stron JSP, które mają strony błędów.
- Wyjątki są dostępne tylko dla tych stron.
- Wartość domyślna to false.
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 jest ustawione jako true. W związku z tym sprawdzi, czy wszystkie inne strony JSP mają ustawiony atrybut errorPage (opisany w następnym atrybucie) i może obsługiwać wyjątki.
- Kodowanie strony:
Wartość domyślna jest określana 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
- ErrorPage:
Składnia errorPage:
<%@ page errorPage="value" %>
Tutaj wartość reprezentuje błędną wartość strony JSP
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 służy errroHandler.jsp
- isELIgnored:
- IsELIgnored to atrybut flagi, w którym musimy zdecydować, czy ignorować tagi EL, czy nie.
- Jego typ danych to java enum, a wartość domyślna to false, dlatego EL jest domyślnie włączone.
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 jest 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"%>Dyrektywa Guru JSP1 Data: <% = new java.util.Date ()%>
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 text / html, aby poinformować kompilator, że html musi zostać sformatowany
- pageEncoding: w tym atrybucie ustawiany jest domyślny zestaw znaków
- isELIgnored: Tag wyrażenia jest fałszywy, dlatego nie jest ignorowany
Linia kodu 3: Tutaj użyliśmy atrybutu importu i importujemy „klasę daty”, która pochodzi z pakietu narzędzi Java, i próbujemy wyświetlić w kodzie bieżącą datę.
Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe
Dane wyjściowe :
- Data to: Bieżąca data przy użyciu metody daty klasy Date
Dyrektywa JSP Include
- Dyrektywa JSP „include” (linia kodowa 8) służy do dołączania jednego pliku do drugiego
- Ten dołączony plik może być HTML, JSP, plikami tekstowymi itp.
- Jest również przydatny do tworzenia szablonów z widokami użytkowników i dzielenia stron na akcje nagłówka, stopki i 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"%>Dyrektywa Guru JSP2 To jest główny plik
Directive_header_jsp3.jsp (który jest zawarty w głównym pliku)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Plik nagłówkowy: <% int count = 1; liczyć ++;out.println (liczba);%>:
Wyjaśnienie kodu:
Dyrektywa_jsp2.jsp:
Linia kodu 3: W tym kodzie używamy tagó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 pliku głównego, jak i dołączonego.
Dyrektywa_header_jsp3.jsp:
Linia kodu 11-12: Wzięliśmy liczbę zmiennych zainicjowaną na 1, a następnie zwiększyliśmy ją. To da wynik w głównym pliku, jak pokazano poniżej.
Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe:
Wynik:
- Dane wyjściowe to Plik nagłówkowy: 2: To jest plik główny
- Dane wyjściowe są wykonywane z pliku dyrektywy_jsp2.jsp, podczas gdy plik z dołączoną dyrektywą_header_jsp3.jsp zostanie skompilowany jako pierwszy.
- Po zakończeniu dołączania pliku główny plik jest wykonywany, a wynik będzie pochodził z pliku głównego „To jest plik główny”. Otrzymasz wynik jako „Plik nagłówkowy: 2” z _jsp3.jsp i „To jest plik główny” z _jsp2.jsp.
Dyrektywa JSP Taglib
- Dyrektywa JSP taglib służy do zdefiniowania biblioteki tagów z przedrostkiem "taglib", którego możemy używać w JSP.
- Więcej szczegółów zostanie omówionych w sekcji Niestandardowe znaczniki JSP
- Dyrektywa JSP taglib jest używana na stronach JSP korzystających ze standardowych bibliotek znaczników JSP
- Używa zestawu niestandardowych znaczników, identyfikuje lokalizację biblioteki i zapewnia sposoby identyfikacji niestandardowych znaczników na stronie JSP.
Składnia dyrektywy taglib:
<%@ taglib uri="uri" prefix="value"%>
Tutaj atrybut „uri” jest unikalnym identyfikatorem w deskryptorze biblioteki znaczników, a atrybut „prefiks” jest nazwą znacznika.
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"%>Dokument JSP dotyczący dyrektywy guru
Wyjaśnienie kodu:
Linia kodu 3: Tutaj "taglib" jest zdefiniowane z atrybutami uri i prefiksem.
Linia kodu 9: „gurutag” to zdefiniowany niestandardowy tag, którego można używać w dowolnym miejscu