Directive JSP
Ce sunt directivele JSP?
- Directivele JSP sunt mesajele către containerul JSP. Ele oferă informații globale despre o întreagă pagină JSP.
- Directivele JSP sunt folosite pentru a da instrucțiuni speciale unui container pentru traducerea JSP în codul servlet.
- În faza ciclului de viață JSP, JSP trebuie convertit într-un servlet care este faza de traducere.
- Ei dau instrucțiuni containerului despre cum să gestioneze anumite aspecte ale procesării JSP
- Directivele pot avea multe atribute separate prin virgulă ca perechi cheie-valoare.
- În JSP, directiva este descrisă în
<%@ %>
tag-uri.
Sintaxa directivei:
<%@ directive attribute="" %>
Tipuri de directive în JSP
Există trei tipuri de directive în JSP:
- Directiva de pagină
- Include directiva
- Directiva Taglib
Fiecare dintre ele este descris în detaliu mai jos cu exemple:
1) Directiva JSP Page
Sintaxa directivei de pagină:
<%@ page…%>
- Oferă atribute care se aplică întregii pagini JSP.
- Acesta definește atributele dependente de pagină, cum ar fi limbajul de scripting, pagina de eroare și cerințele de stocare în tampon.
- Este folosit pentru a furniza instrucțiuni unui container care se referă la pagina JSP curentă.
Mai jos este lista de atribute asociate cu directiva de pagină:
- Limbă
- Prelungește
- Import
- tipul de conținut
- info
- sesiune
- este ThreadSafe
- spălare automată
- tampon
- IsErrorPage
- codificarea paginii
- errorPage
- este ELIgonored
Mai multe detalii despre fiecare atribut
1) limbajul: definește limbaj de programare (limbaj de bază) fiind utilizat în pagină.
Sintaxa limbajului:
<%@ page language="value" %>
Aici valoarea este limbajul de programare (limbajul de bază)
Exemplu:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Explicația codului: În exemplul de mai sus, valoarea limbajului atributului este Java care este limbajul de bază în acest caz. Prin urmare, codul din etichetele de expresie ar fi compilat folosind compilatorul java.
2) Se extinde: Acest atribut este folosit pentru a extinde (moșteni) clasa așa cum o face JAVA
Sintaxa extensiilor:
<%@ page extends="value" %>
Aici valoarea reprezintă clasa de la care trebuie moștenită.
Exemplu:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
Explicația codului: În codul de mai sus, JSP extinde DemoClass care se află în pachetul demotest și va extinde toate caracteristicile clasei.
3) Import: Acest atribut este cel mai folosit atribut în atributele directivei de pagină. Este folosit pentru a spune containerului să importe alte clase, interfețe, enumerari, etc. Java în timp ce generează cod servlet. Este similar cu instrucțiunile de import din clasele, interfețele Java.
Sintaxa importului:
<%@ page import="value" %>
Aici valoarea indică clasele care trebuie importate.
Exemplu:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" import="java.util.Date" pageEncoding="ISO-8859-1"%>
Explicația codului:
În codul de mai sus, importăm clasa Date din pachetul java.util (toate clasele de utilitate) și poate folosi toate metodele din următoarea clasă.
4) contentType:
- Acesta definește schema de codificare a caracterelor, adică este utilizat pentru a seta tipul de conținut și setul de caractere al răspunsului
- Tipul implicit de contentType este
"text/html; charset=ISO-8859-1"
.
Sintaxa contentType:
<%@ page contentType="value" %>
Exemplu:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Explicația codului:
În codul de mai sus, tipul de conținut este setat ca text/html, setează codificarea caracterelor pentru JSP și pentru pagina de răspuns generată.
5) informații
- Acesta definește un șir care poate fi accesat prin metoda getServletInfo().
- Acest atribut este folosit pentru a seta descrierea servlet-ului.
Sintaxa informațiilor:
<%@ page info="value" %>
Aici, valoarea reprezintă informațiile despre servlet.
Exemplu:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Explicația codului:
În codul de mai sus, șirul „Guru Directive JSP” poate fi preluat de interfața servlet folosind getServletInfo()
6) Sesiune
- Pagina JSP creează sesiunea în mod implicit.
- Uneori nu avem nevoie de o sesiune pentru a fi creată în JSP și, prin urmare, putem seta acest atribut la false în acest caz. Valoarea implicită a atributului de sesiune este adevărată și sesiunea este creată. Când este setat la false, atunci putem indica compilatorului să nu creeze sesiunea în mod implicit.
Sintaxa sesiunii:
<%@ page session="true/false"%>
Aici, în acest caz, atributul de sesiune poate fi setat la adevărat sau fals
Exemplu:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="false"%>
Explicația codului:
În exemplul de mai sus, atributul de sesiune este setat la „fals”, prin urmare indicăm că nu dorim să creăm nicio sesiune în acest JSP
7) isThreadSafe:
- Acesta definește modelul de threading pentru servletul generat.
- Indică nivelul de siguranță implementat în pagină.
- Valoarea sa implicită este adevărată, deci simultan
- Putem folosi acest atribut pentru a implementa interfața SingleThreadModel în servletul generat.
- Dacă îl setăm la fals, atunci va implementa SingleThreadModel și poate accesa orice obiecte partajate și poate genera inconsecvență.
Sintaxa isThreadSafe:
<% @ page isThreadSafe="true/false" %>
Aici true sau false reprezintă dacă sincronizarea este acolo, apoi setați ca adevărat și setați-l ca fals.
Exemplu:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isThreadSafe="true"%>
Explicația codului:
În codul de mai sus, isThreadSafe este setat la „adevărat”, prin urmare se va face sincronizarea și pot fi utilizate mai multe fire.
8) Spălare automată:
Acest atribut specifică faptul că ieșirea tamponată ar trebui să fie eliminată automat sau nu, iar valoarea implicită a acelui atribut este adevărată. Dacă valoarea este setată la false, tamponul nu va fi golit automat și dacă este plin, vom obține o excepție. Când buffer-ul nu este, atunci false este ilegitim și nu există tampon, așa că va fi golit automat.
Sintaxa autoFlush:
<% @ page autoFlush="true/false" %>
Aici true/false reprezintă dacă tamponarea trebuie făcută sau nu
Exemplu:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
Explicația codului:
În codul de mai sus, spălarea automată este setată la fals și, prin urmare, tamponarea nu se va face și a șters manual ieșirea.
9) Buffer:
- Folosind acest atribut, obiectul răspuns de ieșire poate fi stocat în tampon.
- Putem defini dimensiunea tamponării care trebuie făcută folosind acest atribut, iar dimensiunea implicită este de 8KB.
- Acesta direcționează servletul să scrie buffer-ul înainte de a scrie în obiectul răspuns.
Sintaxa tamponului:
<%@ page buffer="value" %>
Aici valoarea reprezintă dimensiunea tamponului care trebuie definit. Dacă nu există un buffer, atunci putem scrie ca niciunul, iar dacă nu menționăm nicio valoare, atunci valoarea implicită este 8KB
Exemplu:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
Explicația codului:
În codul de mai sus, dimensiunea tamponului este menționată ca 16KB, în care tamponul ar fi de acea dimensiune
10) isErrorPage:
- Indică faptul că Pagina JSP care are o pagină de eroare va fi verificată într-o altă pagină JSP
- Orice fișier JSP declarat cu atributul „isErrorPage” este apoi capabil să primească excepții de la alte pagini JSP care au pagini de eroare.
- Excepțiile sunt disponibile numai pentru aceste pagini.
- Valoarea implicită este false.
Sintaxa isErrorPage:
<%@ page isErrorPage="true/false"%>
Exemplu:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isErrorPage="true"%>
Explicația codului:
În codul de mai sus, isErrorPage este setat ca adevărat. Prin urmare, va verifica că orice alt JSP are setul de atribute errorPage (descris în următorul atribut) și poate gestiona excepțiile.
11) Codificarea paginii:
Atributul „pageEncoding” definește codificarea caracterelor pentru pagina JSP. Valoarea implicită este specificată ca „ISO-8859-1” dacă nu este specificată alta.
Sintaxa pageEncoding:
<%@ page pageEncoding="vaue" %>
Aici value specifică valoarea setului de caractere pentru JSP
Exemplu:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isErrorPage="true"%>
Explicația codului:
În codul de mai sus, „pageEncoding” a fost setat la setul de caractere implicit ISO-8859-1
12) eroarePagina:
Acest atribut este folosit pentru a seta pagina de eroare pentru pagina JSP dacă JSP lansează o excepție și apoi redirecționează către pagina de excepție.
Sintaxa paginii de eroare:
<%@ page errorPage="value" %>
Aici valoarea reprezintă valoarea paginii JSP de eroare
Exemplu:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%>
Explicația codului:
În codul de mai sus, pentru a gestiona excepțiile avem errroHandler.jsp
13) este ELIgnorat:
- IsELIgnored este un atribut steag în care trebuie să decidem dacă ignorăm sau nu etichetele EL.
- Tipul său de date este java enum, iar valoarea implicită este falsă, prin urmare EL este activat implicit.
Sintaxa isELIgnored:
<%@ page isELIgnored="true/false" %>
Aici, adevărat/fals reprezintă valoarea EL, indiferent dacă ar trebui ignorat sau nu.
Exemplu:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isELIgnored="true"%>
Explicația codului:
În codul de mai sus, isELIgnored este adevărat și, prin urmare Limbajul expresiei (EL) este ignorat aici. În exemplul de mai jos, folosim patru atribute (linia de cod 1-2)
Exemplu cu patru atribute
<%@ 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>
Explicația codului:
Linia de cod 1-2: Aici am definit patru atribute, adică
- Limbă: este setată ca Java ca limbaj de programare
- contentType: setați ca text/html pentru a spune compilatorului că html trebuie să fie format
- pageEncoding: set de caractere implicit este setat în acest atribut
- isELIgnored: Eticheta de expresie este falsă, prin urmare, nu este ignorată
Linia de cod 3: Aici am folosit atributul de import și importă „Clasa de dată”, care este de la Java util și încercăm să afișăm data curentă în cod.
Când executați codul de mai sus, veți obține următoarea ieșire
producție:
- Data este: data curentă utilizând metoda datei din clasa de date
2) Directiva JSP Include
- „Directiva de includere” JSP (linia de cod 8) este folosită pentru a include un fișier în celălalt fișier
- Acest fișier inclus poate fi HTML, JSP, fișiere text etc.
- De asemenea, este util în crearea de șabloane cu vizualizările utilizatorului și împărțirea paginilor în acțiuni de antet și subsol și bară laterală.
- Include fișierul în timpul fazei de traducere
Sintaxa directivei include:
<%@ include….%>
Exemplu:
Directive_jsp2.jsp (Fișier principal)
<%@ 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>
Directive_header_jsp3.jsp (care este inclus în fișierul principal)
<%@ 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>
Explicația codului:
Directive_jsp2.jsp:
Linia de cod 3: În acest cod, folosim etichete include în care includem fișierul directive_header_jsp3.jsp în fișierul principal (_jsp2.jsp) și obținem rezultatul atât al fișierului principal, cât și al fișierului inclus.
Directive_header_jsp3.jsp:
Linia de cod 11-12: Am luat un număr de variabile inițializat la 1 și apoi l-am incrementat. Acest lucru va da rezultatul în fișierul principal, așa cum se arată mai jos.
Când executați codul de mai sus, obțineți următoarea ieșire:
ieșire:
- Rezultatul este Fișier antet: 2 : Acesta este fișierul principal
- Ieșirea este executată din fișierul directive_jsp2.jsp, în timp ce fișierul inclus directive_header_jsp3.jsp va fi compilat mai întâi.
- După ce fișierul inclus este finalizat, fișierul principal este executat, iar rezultatul va fi din fișierul principal „Acesta este fișierul principal”. Deci, veți obține rezultatul ca „Fișier antet: 2” de la _jsp3.jsp și „Acesta este fișierul principal” de la _jsp2.jsp.
3) Directiva JSP Taglib
- Directiva JSP taglib este folosită pentru a defini biblioteca de etichete cu „taglib” ca prefix, pe care o putem folosi în JSP.
- Mai multe detalii vor fi tratate în secțiunea Etichete personalizate JSP
- Directiva JSP taglib este utilizată în paginile JSP folosind bibliotecile standard de etichete JSP
- Utilizează un set de etichete personalizate, identifică locația bibliotecii și oferă mijloace de identificare a etichetelor personalizate în pagina JSP.
Sintaxa directivei taglib:
<%@ taglib uri="uri" prefix="value"%>
Aici atributul „uri” este un identificator unic în descriptorul bibliotecii de etichete, iar atributul „prefix” este un nume de etichetă.
Exemplu:
<%@ 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>
Explicația codului:
Linia de cod 3: Aici „taglib” este definit cu atributele uri și prefix.
Linia de cod 9: „gurutag” este eticheta personalizată definită și poate fi folosită oriunde