Směrnice JSP

⚡ Chytré shrnutí

Direktivy JSP jsou zprávy pro kontejner JSP, které poskytují globální informace o celé stránce a instruují ji během překladu do kódu servletu. Existují tři typy direktiv: page, include a taglib, každá zapsaná uvnitř speciálních tagů.

  • 📢 Definice směrnice: Zpráva pro kontejner JSP s globálními instrukcemi pro překlad na úrovni celé stránky.
  • 🧭 Tři typy: Direktivy Page, include a taglib, všechny napsané uvnitř tagů <%@ %>.
  • 📄 Směrnice pro stránku: Nastavuje atributy jazyka, importu, contentType, session, bufferu, errorPage a další.
  • 📎 Zahrnout směrnici: Při překladu sloučí do stránky další soubor (HTML, JSP nebo text).
  • ???? ️ Směrnice Taglib: Deklaruje knihovnu tagů s URI a prefixem pro povolení vlastních tagů.

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í (dědění) třídy podobně 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) Dovoz: Tento atribut je nejpoužívanějším atributem v atributech direktiv stránky. Používá se k tomu, aby kontejneru sdělil, že má při generování kódu servletu importovat další třídy Java, rozhraní, výčty atd. Je podobný příkazům importu v třídách Java a 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) Typ obsahu:

  • 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, řetězec „Guru Direktivu JSP“ lze načíst rozhraním servletu pomocí funkce 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) se zde ignoruje. 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:

Code Řádek 1–2: 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

Code Řádek 3: 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 „direktiva include“ (řádek kódu 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 zobrazeními a rozdělení stránek do záhlaví a zápatí a akcí postranního panelu.
  • Zahrnuje soubor ve fázi překladu

Syntaxe směrnice include:

<%@ include….%>

Příklad:

Directive_jsp2.js (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:

Code Řádek 3: V tomto kódu používáme tagy include, kde vkládáme soubor directive_header_jsp3.jsp do hlavního souboru (_jsp2.jsp) a získáváme výstup z hlavního i vloženého souboru.

Direktiva_header_jsp3.jsp:

Code Řádek 11–12: Vzali jsme proměnnou count inicializovanou na 1 a poté ji inkrementovali. Výstup v hlavním souboru bude zobrazen 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:

Code Řádek 3: Zde je „taglib“ definován s atributy uri a prefix.

Code Řádek 9: „gurutag“ je definovaná vlastní značka a lze ji použít kdekoli

Nejčastější dotazy

Direktiva include sloučí soubor v době překladu, takže změny je nutné rekompilovat. Akce jsp:include zahrnuje odpověď souboru v době požadavku, což ji usnadňuje pro dynamický, často se měnící obsah.

Atribut import říká kontejneru, který Java třídy, rozhraní nebo balíčky, které se mají importovat při generování kódu servletu, podobně jako příkazy import v běžném Java třídy, takže jejich metody jsou k dispozici na stránce.

Direktivy JSP se zpracovávají v době překladu, kdy je stránka JSP převedena na servlet. Ovlivňují způsob generování servletu, spíše než aby produkovaly výstup během každého požadavku.

Umělá inteligence dokáže navrhnout správnou stránku, include nebo taglib direktivu se správnými atributy z popisu v jednoduchém jazyce, vysvětlit každý atribut a označit běžné chyby, helpping začátečníci konfigurují JSP stránky rychleji a přesněji.

Ano. Umělá inteligence dokáže skenovat soubory JSP a odhalit neplatné hodnoty atributů, konfliktní nastavení, jako je například chyba „buffer none“ s nastavením autoFlush false, chybějící chybové stránky a duplicitní direktivy, hel.ping vývojáři zachytí problémy s konfigurací před nasazením.

Shrňte tento příspěvek takto: