Какво представляват JSP директивите?
- JSP директивите са съобщенията към JSP контейнера. Те предоставят глобална информация за цяла JSP страница.
- Директивите на JSP се използват за даване на специални инструкции на контейнер за превод на JSP в код на сървлета.
- Във фаза на жизнения цикъл на JSP, JSP трябва да бъде преобразуван в сервлет, който е фазата на транслация.
- Те дават инструкции на контейнера за това как да се справят с определени аспекти на JSP обработката
- Директивите могат да имат много атрибути чрез запетая, разделени като двойки ключ-стойност.
- В JSP директивата е описана в маркерите <% @%>.
Синтаксис на директивата:
<%@ directive attribute %>
Има три вида директиви:
- Директива на страницата
- Включете директива
- Директива на Таглиб
Всеки от тях е описан подробно по-долу с примери:
В този урок ще научите -
- Директива за JSP страница
- Директива за включване на JSP
- Директива за JSP Taglib
Директива за JSP страница
Синтаксис на директивата Page:
<%@ page… %>
- Той предоставя атрибути, които се прилагат към цялата JSP страница.
- Той дефинира зависими от страни атрибути, като скриптов език, страница за грешка и изисквания за буфериране.
- Използва се за предоставяне на инструкции на контейнер, който се отнася до текущата JSP страница.
Следват списъка с атрибути, свързани с директивата на страницата:
- Език
- Удължава
- Внос
- тип съдържание
- информация
- сесия
- isThreadSafe
- автоизплакване
- буфер
- IsErrorPage
- pageEncoding
- errorPage
- isELIgonored
Повече подробности за всеки атрибут
- език : Той определя езика за програмиране (основния език), който се използва в страницата.
Синтаксис на езика:
<%@ page language="value" %>
Тук стойността е езикът за програмиране (основният език)
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
Обяснение на кода: В горния пример стойността на езика на атрибута е Java, който е основният език в този случай. Следователно кодът в етикетите на изрази ще бъде компилиран с помощта на java compiler.
- Extends : Този атрибут се използва за разширяване (наследяване) на класа, както прави JAVA
Синтаксис на extends:
<%@ page extends="value" %>
Тук стойността представлява клас, от който трябва да бъде наследена.
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%><%@ page extends="demotest.DemoClass" %>
Обяснение на кода: В горния код JSP разширява DemoClass, който е в пакета за демотест, и ще разшири всички функции на класа.
- Импортиране : Този атрибут е най-използваният атрибут в атрибутите на директивата на страницата. Той се използва, за да каже на контейнера да импортира други Java класове, интерфейси, преброявания и др., Докато генерира код на сървлет.
Синтаксис на импортиране :
<%@ page import="value" %>
Тук стойността показва класовете, които трябва да бъдат импортирани.
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"import="java.util.Date" pageEncoding="ISO-8859-1"%>
Обяснение на кода:
В горния код импортираме клас Date от пакета java.util (всички класове помощни програми) и той може да използва всички методи от следващия клас.
- contentType :
- Той определя схемата за кодиране на символи, т.е. използва се за задаване на типа съдържание и набора от символи на отговора
- Типът по подразбиране на contentType е "text / html; charset = ISO-8859-1".
Синтаксис на contentType:
<%@ page contentType="value" %>
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
Обяснение на кода:
В горния код типът съдържание е зададен като text / html, той задава кодиране на символи за JSP и за генерирана страница за отговор.
- информация
- Той дефинира низ, който може да бъде достъпен чрез метода getServletInfo ().
- Този атрибут се използва за задаване на описанието на сървлета.
Синтаксис на информация:
<%@ page info="value" %>
Тук стойността представлява информацията за сървлета.
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>
Обяснение на кода:
В горния код низ „Guru Directive JSP“ може да бъде извлечен от интерфейса на сървлета с помощта на getServletInfo ()
- Сесия
- JSP страницата създава сесия по подразбиране.
- Понякога не се нуждаем от сесия, която да бъде създадена в JSP, и следователно можем да зададем този атрибут на false в този случай. Стойността по подразбиране на атрибута на сесията е true и сесията се създава.
Когато е зададено на false, тогава можем да посочим компилаторът да не създава сесията по подразбиране.
Синтаксис на сесията:
<%@ page session="true/false"%>
Тук в този случай атрибутът на сесията може да бъде зададен на true или false
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"session="false"%>
Обяснение на кода:
В горния пример атрибутът session е зададен на "false", следователно ние показваме, че не искаме да създаваме никаква сесия в този JSP
- isThreadSafe:
- Той дефинира модела на резбата за генерирания сървлет.
- Той показва нивото на безопасност на нишките, внедрено на страницата.
- Стойността му по подразбиране е true, така че едновременно
- Можем да използваме този атрибут за реализиране на интерфейс SingleThreadModel в генерирания сървлет.
- Ако го зададем на false, той ще приложи SingleThreadModel и ще има достъп до всички споделени обекти и може да доведе до несъответствие.
Синтаксис на isThreadSafe:
<% @ page isThreadSafe="true/false" %>
Тук true или false представлява дали синхронизацията е налице, след това се задава като true и го задава като false.
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"isThreadSafe="true"%>
Обяснение на кода:
В горния код isThreadSafe е зададен на „true“, следователно ще бъде извършена синхронизация и могат да се използват множество нишки.
- AutoFlush:
Този атрибут указва, че буферираният изход трябва да бъде изтрит автоматично или не и стойността по подразбиране на този атрибут е вярна.
Ако стойността е зададена на false, буферът няма да бъде изтрит автоматично и ако е пълен, ще получим изключение.
Когато буферът е никакъв, тогава false е нелегитимен и няма буфериране, така че ще бъде изтрит автоматично.
Синтаксис на autoFlush:
<% @ page autoFlush="true/false" %>
Тук true / false представя дали буферирането трябва да се направи или не
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"autoFlush="false"%>
Обяснение на кода:
В горния код, автоматичното измиване е зададено на false и следователно буферирането няма да се извърши и ръчно измие изхода.
- Буфер:
- Използвайки този атрибут, изходният обект на отговор може да бъде буфериран.
- Можем да дефинираме размера на буферирането, който да се извърши, като използваме този атрибут, а размерът по подразбиране е 8KB.
- Той насочва сървлета да напише буфера преди запис в обекта за отговор.
Синтаксис на буфера:
<%@ page buffer="value" %>
Тук стойността представлява размера на буфера, който трябва да бъде дефиниран. Ако няма буфер, тогава можем да напишем като никакъв и ако не споменем никаква стойност, тогава стойността по подразбиране е 8KB
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"buffer="16KB"%>
Обяснение на кода:
В горния код размерът на буфера се споменава като 16KB, като буферът ще бъде с този размер
- isErrorPage:
- Това показва, че JSP страница, която има errorPage, ще бъде проверена в друга JSP страница
- След това всеки JSP файл, деклариран с атрибут "isErrorPage", може да получава изключения от други JSP страници, които имат страници за грешки.
- Изключенията са достъпни само за тези страници.
- Стойността по подразбиране е false.
Синтаксис на isErrorPage:
<%@ page isErrorPage="true/false"%>
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"isErrorPage="true"%>
Обяснение на кода:
В горния код isErrorPage е зададен като true. Следователно, той ще провери дали всички други JSP имат набор атрибути errorPage (описан в следващия атрибут) и може да обработва изключения.
- Кодиране на страница:
По подразбиране е посочено „ISO-8859-1“, ако не е посочено друго.
Синтаксис на pageEncoding:
<%@ page pageEncoding="vaue" %>
Тук стойността определя стойността на набора от знаци за JSP
Пример:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"isErrorPage="true"%>
Обяснение на кода:
В горния код "pageEncoding" е зададен по подразбиране на набор от знаци ISO-8859-1
- errorPage:
Синтаксис на грешка Страница:
<%@ page errorPage="value" %>
Тук стойността представлява грешката JSP стойност на страницата
Пример:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"errorPage="errorHandler.jsp"%>
Обяснение на кода:
В горния код, за да се справим с изключенията, имаме errroHandler.jsp
- isELIgnored:
- IsELIgnored е атрибут на флаг, при който трябва да решим дали да игнорираме EL таговете или не.
- Неговият тип данни е java enum и стойността по подразбиране е false, следователно EL е активирана по подразбиране.
Синтаксис на isELIgnored:
<%@ page isELIgnored="true/false" %>
Тук true / false представлява стойността на EL, независимо дали трябва да се игнорира или не.
Пример:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"isELIgnored="true"%>
Обяснение на кода:
В горния код, isELIgnored е вярно и следователно езикът на изразяване (EL) се игнорира тук.
В примера по-долу използваме четири атрибута (кодов ред 1-2)
Пример с четири атрибута
<% @ page language = "java" contentType = "text / html;" pageEncoding = "ISO-8859-1"isELIgnored = "false"%><% @ page import = "java.util.Date"%>Директива Guru JSP1 Датата е: <% = нов java.util.Date ()%>
Обяснение на кода:
Кодов ред 1-2: Тук дефинирахме четири атрибута, т.е.
- Език: Зададен е като Java като език за програмиране
- contentType: задава се като текст / html, за да каже на компилатора, че html трябва да бъде формат
- pageEncoding: в този атрибут е зададен набор от символи по подразбиране
- isELIgnored: Expression Tag е false, следователно не се пренебрегва
Кодов ред 3: Тук използвахме атрибут за импортиране и той импортира „Клас дата“, който е от Java util пакета, и се опитваме да покажем текущата дата в кода.
Когато изпълните горния код, ще получите следния изход
Изход :
- Date is: Текущата дата, използваща метода за дата на класа на датите
Директива за включване на JSP
- JSP "включва директива" (код 8) се използва за включване на един файл в друг файл
- Този включен файл може да бъде HTML, JSP, текстови файлове и т.н.
- Също така е полезно при създаването на шаблони с потребителски изгледи и разбиване на страниците на действия в горния и долния колонтитул и страничната лента.
- Той включва файл по време на фазата на превод
Синтаксис на директивата за включване:
<%@ include… .%>
Пример:
Directive_jsp2.jsp (Основен файл)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%><% @ include file = "Directive_header_jsp3.jsp"%>Директива за гуру JSP2 Това е основният файл
Directive_header_jsp3.jsp (който е включен в основния файл)
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1"pageEncoding = "ISO-8859-1"%> Заглавен файл: <% int count = 1; преброяване ++;out.println (брой);%>:
Обяснение на кода:
Directive_jsp2.jsp:
Кодов ред 3: В този код използваме включете тагове, където включваме файла директива_header_jsp3.jsp в основния файл (_jsp2.jsp) и получава изхода както на основния файл, така и на включения файл.
Directive_header_jsp3.jsp:
Кодов ред 11-12: Взехме брой променливи, инициализиран на 1 и след това го увеличихме. Това ще даде изхода в основния файл, както е показано по-долу.
Когато изпълнявате горния код, получавате следния изход:
Изход:
- Резултатът е заглавен файл: 2: Това е основният файл
- Изходът се изпълнява от файла director_jsp2.jsp, докато включеният файл director_header_jsp3.jsp ще бъде компилиран първо.
- След като включеният файл приключи, основният файл се изпълнява и изходът ще бъде от основния файл "Това е основният файл". Така че ще получите изхода като "Header file: 2" от _jsp3.jsp и "This is main file" от _jsp2.jsp.
Директива за JSP Taglib
- JSP директивата taglib се използва за дефиниране на библиотеката с тагове с "taglib" като префикс, който можем да използваме в JSP.
- Повече подробности ще бъдат разгледани в раздела JSP Custom Tags
- JSP директивата taglib се използва в JSP страниците, използвайки стандартните библиотеки на JSP тагове
- Той използва набор от персонализирани маркери, идентифицира местоположението на библиотеката и предоставя средства за идентифициране на персонализирани маркери в JSP страницата.
Синтаксис на директивата taglib:
<%@ taglib uri="uri" prefix="value"%>
Тук атрибутът "uri" е уникален идентификатор в дескриптора на библиотеката на маркери, а атрибутът "prefix" е име на маркер.
Пример:
<% @ 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"%>Директива за гуру JSP
Обяснение на кода:
Кодов ред 3: Тук "taglib" е дефиниран с атрибути uri и префикс.
Кодов ред 9: „gurutag“ е дефиниран персонализиран таг и може да се използва навсякъде