Směrnice JSP

Co jsou směrnice JSP?

  • Direktivy JSP jsou zprávy do kontejneru JSP. Poskytují globální informace o celé stránce JSP.
  • Direktivy JSP se používají k zadání speciálních instrukcí kontejneru pro překlad kódu JSP do kódu servletu.
  • Ve fázi životního cyklu JSP musí být JSP převeden na servlet, který je fází překladu.
  • Dávají kontejneru pokyny, jak zacházet s určitými aspekty zpracování JSP
  • Direktivy mohou mít mnoho atributů oddělených čárkou jako páry klíč–hodnota.
  • V JSP je směrnice popsána v <%@ %> značky.

Syntaxe směrnice:

<%@ directive attribute="" %>

Typy direktiv v JSP

V JSP existují tři typy direktiv:

  1. Směrnice stránky
  2. Zahrnout směrnici
  3. Direktiva Taglib

Každý z nich je podrobně popsán níže s příklady:

1) Direktiva JSP Page

Syntaxe direktivy Page:

<%@ page…%>
  • Poskytuje atributy, které se použijí na celou stránku JSP.
  • Definuje atributy závislé na stránce, jako je skriptovací jazyk, chybová stránka a požadavky na ukládání do vyrovnávací paměti.
  • Používá se k poskytování pokynů pro kontejner, který se týká aktuální stránky JSP.

Níže je uveden seznam atributů spojených s direktivou stránky:

  1. Jazyk
  2. Rozšiřuje
  3. import
  4. typ obsahu
  5. info
  6. Zasedání
  7. isThreadSafe
  8. automatické proplachování
  9. nárazník
  10. IsErrorPage
  11. kódování stránky
  12. chybová stránka
  13. isELIgonored

Další podrobnosti o každém atributu

1) jazyk: Definuje programovací jazyk (podkladový jazyk) používaný na stránce.

Syntaxe jazyka:

<%@ page language="value" %>

Zde je hodnota programovací jazyk (podkladový jazyk)

Příklad:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

Vysvětlení kódu: Ve výše uvedeném příkladu je hodnota jazyka atributu Java což je v tomto případě základní jazyk. Kód ve značkách výrazu by tedy byl zkompilován pomocí kompilátoru Java.

2) Prodlužuje: Tento atribut se používá k rozšíření (zdědění) třídy jako JAVA

Syntaxe extends:

<%@ page extends="value" %>

Zde hodnota představuje třídu, ze které má být zděděna.

Příklad:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
	   pageEncoding="ISO-8859-1"%>

<%@ page extends="demotest.DemoClass" %>

Vysvětlení kódu: Ve výše uvedeném kódu JSP rozšiřuje DemoClass, který je součástí demotestu, a rozšíří všechny funkce třídy.

3) Import: Tento atribut je nejpoužívanějším atributem v atributech direktivy stránky. Používá se k tomu, aby sdělil kontejneru, aby importoval jiné třídy Java, rozhraní, výčty atd. při generování kódu servletu. Je podobný příkazům pro import v třídách Java, rozhraních.

Syntaxe importu:

<%@ page import="value" %>

Zde hodnota označuje třídy, které je třeba importovat.

Příklad:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    import="java.util.Date" pageEncoding="ISO-8859-1"%>

Vysvětlení kódu:

Ve výše uvedeném kódu importujeme třídu Date z balíčku java.util (všechny třídy utilit) a může používat všechny metody následující třídy.

4) ContentType:

  • Definuje schéma kódování znaků, tj. používá se k nastavení typu obsahu a znakové sady odpovědi
  • Výchozí typ contentType je "text/html; charset=ISO-8859-1".

Syntaxe contentType:

<%@ page contentType="value" %>

Příklad:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

Vysvětlení kódu:

Ve výše uvedeném kódu je typ obsahu nastaven jako text/html, nastavuje kódování znaků pro JSP a pro vygenerovanou stránku odpovědi.

5) informace

  • Definuje řetězec, ke kterému lze přistupovat pomocí metody getServletInfo().
  • Tento atribut se používá k nastavení popisu servletu.

Syntaxe informací:

<%@ page info="value" %>

Zde hodnota představuje informace o servletu.

Příklad:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>

Vysvětlení kódu:

Ve výše uvedeném kódu lze řetězec „Guru Direktiva JSP“ načíst rozhraním servletu pomocí getServletInfo()

6) Zasedání

  • Stránka JSP ve výchozím nastavení vytváří relaci.
  • Někdy nepotřebujeme, aby se relace vytvořila v JSP, a proto můžeme v takovém případě nastavit tento atribut na false. Výchozí hodnota atributu session je true a relace je vytvořena. Když je nastaveno na false, pak můžeme kompilátoru označit, že relaci ve výchozím nastavení nevytváří.

Syntaxe relace:

<%@ page session="true/false"%>

Zde v tomto případě může být atribut session nastaven na true nebo false

Příklad:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    session="false"%>

Vysvětlení kódu:

Ve výše uvedeném příkladu je atribut relace nastaven na hodnotu „false“, čímž dáváme najevo, že v tomto JSP nechceme vytvářet žádnou relaci.

7) isThreadSafe:

  • Definuje model vláken pro generovaný servlet.
  • Označuje úroveň zabezpečení vláken implementované na stránce.
  • Jeho výchozí hodnota je true, takže simultánní
  • Tento atribut můžeme použít k implementaci rozhraní SingleThreadModel do generovaného servletu.
  • Pokud jej nastavíme na hodnotu false, bude implementovat SingleThreadModel a bude mít přístup ke všem sdíleným objektům a může způsobit nekonzistenci.

Syntaxe isThreadSafe:

<% @ page isThreadSafe="true/false" %>

Zde true nebo false představuje, zda je synchronizace tam, pak nastavte jako true a nastavte ji jako false.

Příklad:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    isThreadSafe="true"%>

Vysvětlení kódu:

Ve výše uvedeném kódu je isThreadSafe nastaveno na „true“, takže synchronizace bude provedena a lze použít více vláken.

8) AutoFlush:

Tento atribut určuje, že výstup ve vyrovnávací paměti by měl být vyprázdněn automaticky nebo ne a výchozí hodnota tohoto atributu je true. Pokud je hodnota nastavena na false, buffer se automaticky nevyprázdní a pokud je plný, dostaneme výjimku. Když je vyrovnávací paměť žádná, pak je nepravda nelegitimní a neexistuje žádná vyrovnávací paměť, takže bude automaticky vyprázdněna.

Syntaxe autoFlush:

<% @ page autoFlush="true/false" %>

Zde true/false představuje, zda je třeba provést ukládání do vyrovnávací paměti nebo ne

Příklad:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    autoFlush="false"%>

Vysvětlení kódu:

Ve výše uvedeném kódu je automatické vyprázdnění nastaveno na hodnotu false, a proto se ukládání do vyrovnávací paměti neprovede a výstup se vyprázdní ručně.

9) Buffer:

  • Pomocí tohoto atributu může být objekt výstupní odezvy ukládán do vyrovnávací paměti.
  • Pomocí tohoto atributu můžeme definovat velikost ukládání do vyrovnávací paměti a výchozí velikost je 8 kB.
  • Řídí servletu, aby zapsal vyrovnávací paměť před zápisem do objektu odpovědi.

Syntaxe bufferu:

<%@ page buffer="value" %>

Zde hodnota představuje velikost vyrovnávací paměti, kterou je třeba definovat. Pokud není žádná vyrovnávací paměť, můžeme zapisovat jako žádná, a pokud neuvedeme žádnou hodnotu, pak výchozí hodnota je 8 kB

Příklad:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    buffer="16KB"%>

Vysvětlení kódu:

Ve výše uvedeném kódu je velikost vyrovnávací paměti uvedena jako 16 kB, přičemž vyrovnávací paměť by měla tuto velikost

10) isErrorPage:

  • Znamená to, že stránka JSP, která má chybovou stránku, bude zkontrolována na jiné stránce JSP
  • Jakýkoli soubor JSP deklarovaný s atributem „isErrorPage“ je pak schopen přijímat výjimky z jiných stránek JSP, které mají chybové stránky.
  • Výjimky jsou dostupné pouze pro tyto stránky.
  • Výchozí hodnota je false.

Syntaxe isErrorPage:

<%@ page isErrorPage="true/false"%>

Příklad:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    isErrorPage="true"%>

Vysvětlení kódu:

Ve výše uvedeném kódu je isErrorPage nastavena jako true. Proto zkontroluje, zda má jakýkoli jiný JSP nastaven atribut errorPage (popsaný v dalším atributu) a dokáže zpracovat výjimky.

11) Kódování stránky:

Atribut „pageEncoding“ definuje kódování znaků pro stránku JSP. Výchozí hodnota je specifikována jako „ISO-8859-1“, pokud není specifikována žádná jiná.

Syntaxe pageEncoding:

<%@ page pageEncoding="vaue" %>

Zde hodnota určuje hodnotu znakové sady pro JSP

Příklad:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isErrorPage="true"%>

Vysvětlení kódu:

Ve výše uvedeném kódu bylo „pageEncoding“ nastaveno na výchozí znakovou sadu ISO-8859-1

12) chybová stránka:

Tento atribut se používá k nastavení chybové stránky pro stránku JSP, pokud JSP vyvolá výjimku a poté přesměruje na stránku výjimky.

Syntaxe errorPage:

<%@ page errorPage="value" %>

Zde hodnota představuje hodnotu chybové stránky JSP

Příklad:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    errorPage="errorHandler.jsp"%>

Vysvětlení kódu:

Ve výše uvedeném kódu pro zpracování výjimek máme errroHandler.jsp

13) je EIGnorováno:

  • IsELIgnored je příznakový atribut, kde se musíme rozhodnout, zda ignorovat EL tagy nebo ne.
  • Jeho datový typ je java enum a výchozí hodnota je false, takže EL je ve výchozím nastavení povoleno.

Syntaxe isELIgnored:

<%@ page isELIgnored="true/false" %>

Pravda/nepravda zde představuje hodnotu EL, ať už má být ignorována nebo ne.

Příklad:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    isELIgnored="true"%>

Vysvětlení kódu:

Ve výše uvedeném kódu je isELIgnored pravdivé a tedy jazyk výrazů (EL) je zde ignorován. V níže uvedeném příkladu používáme čtyři atributy (řádek kódu 1-2)

Příklad se čtyřmi atributy

<%@ 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>

Vysvětlení kódu:

Řádek 1–2 kódu: Zde jsme definovali čtyři atributy, tzn

  • Jazyk: Je nastaven jako Java jako programovací jazyk
  • contentType: nastavte jako text/html, abyste kompilátoru řekli, že html musí být ve formátu
  • pageEncoding: v tomto atributu je nastavena výchozí znaková sada
  • isELIgnored: Značka výrazu je false, proto není ignorována

3. řádek kódu: Zde jsme použili atribut import, a to import „třídy data“, která je z Java util balíček a snažíme se v kódu zobrazit aktuální datum.

Když spustíte výše uvedený kód, získáte následující výstup

Směrnice o stránce JSP

Výstup:

  • Datum je: Aktuální datum pomocí metody data třídy data

2) Direktiva JSP Include

  • JSP „zahrnout direktiva“ (kódová řada 8) se používá k zahrnutí jednoho souboru do druhého souboru
  • Tento zahrnutý soubor může být HTML, JSP, textové soubory atd.
  • Je také užitečné při vytváření šablon s uživatelskými pohledy a rozdělení stránek na akce záhlaví a zápatí a postranního panelu.
  • Zahrnuje soubor ve fázi překladu

Syntaxe směrnice include:

<%@ include….%>

Příklad:

Direktiva_jsp2.jsp (hlavní soubor)

<%@ 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>

Direktiva_header_jsp3.jsp (která je součástí hlavního souboru)

<%@ 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>

Vysvětlení kódu:

Direktiva_jsp2.jsp:

3. řádek kódu: V tomto kódu používáme značky include, kde vkládáme soubor direktiva_header_jsp3.jsp do hlavního souboru (_jsp2.jsp) a získává výstup hlavního souboru i zahrnutého souboru.

Direktiva_header_jsp3.jsp:

Řádek 11–12 kódu: Vzali jsme počet proměnných inicializovaný na 1 a poté jsme jej zvýšili. To poskytne výstup v hlavním souboru, jak je znázorněno níže.

Když spustíte výše uvedený kód, získáte následující výstup:

Direktiva JSP Include

Výstup:

  • Výstupem je hlavičkový soubor: 2 : Toto je hlavní soubor
  • Výstup je proveden ze souboru direktiva_jsp2.jsp, zatímco zahrnutý soubor direktivy_header_jsp3.jsp bude zkompilován jako první.
  • Po dokončení vloženého souboru se spustí hlavní soubor a výstup bude z hlavního souboru „Toto je hlavní soubor“. Získáte tedy výstup jako „Soubor záhlaví: 2“ z _jsp3.jsp a „Toto je hlavní soubor“ z _jsp2.jsp.

3) Směrnice JSP Taglib

  • Direktiva JSP taglib se používá k definování knihovny značek s předponou „taglib“, kterou můžeme použít JSP.
  • Více podrobností bude popsáno v sekci JSP Custom Tags
  • Direktiva JSP taglib se používá na stránkách JSP pomocí standardních knihoven značek JSP
  • Používá sadu vlastních značek, identifikuje umístění knihovny a poskytuje prostředky k identifikaci vlastních značek na stránce JSP.

Syntaxe direktivy taglib:

<%@ taglib uri="uri" prefix="value"%>

Zde je atribut „uri“ jedinečným identifikátorem v deskriptoru knihovny značek a atribut „prefix“ je název značky.

Příklad:

<%@ 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>

Vysvětlení kódu:

3. řádek kódu: Zde je „taglib“ definován s atributy uri a prefix.

9. řádek kódu: „gurutag“ je definovaná vlastní značka a lze ji použít kdekoli