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:

  1. Dyrektywa strony
  2. Uwzględnij dyrektywę
  3. 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:

  1. Wybierz język
  2. Wydłuża się
  3. import
  4. Typ zawartości
  5. Informacje
  6. Sesja
  7. jest ThreadSafe
  8. automatyczne spłukiwanie
  9. bufor
  10. IsErrorPage
  11. kodowanie strony
  12. Strona błędu
  13. 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

Dyrektywa dotycząca strony JSP

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:

Dyrektywa JSP Dołącz

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