Що таке директиви JSP?
- Директиви JSP - це повідомлення до контейнера JSP. Вони надають загальну інформацію про цілу сторінку JSP.
- Директиви JSP використовуються для надання спеціальних інструкцій контейнеру для перекладу JSP в код сервлета.
- На фазі життєвого циклу JSP JSP потрібно перетворити на сервлет, який є фазою перекладу.
- Вони дають інструкції контейнеру про те, як обробляти певні аспекти обробки JSP
- Директиви можуть мати багато атрибутів, розділених комами, як пари ключ-значення.
- У JSP директива описана в тегах <% @%>.
Синтаксис директиви:
<%@ directive attribute %>
Існує три типи директив:
- Директива сторінки
- Включити директиву
- Директива Тагліба
Кожен з них детально описаний нижче з прикладами:
У цьому підручнику ви дізнаєтесь -
- Директива JSP Page
- Директива JSP Include
- Директива JSP Тагліб
Директива JSP Page
Синтаксис директиви Page:
<%@ page… %>
- Він надає атрибути, які застосовуються до всієї сторінки JSP.
- Він визначає залежні від сторінки атрибути, такі як мова сценаріїв, сторінка помилок та вимоги до буферизації.
- Він використовується для надання інструкцій контейнеру, який відноситься до поточної сторінки JSP.
Нижче наведено його список атрибутів, пов'язаних з директивою сторінки:
- Мову
- Подовжує
- Імпорт
- contentType
- інформація
- сесія
- isThreadSafe
- автомивка
- буфер
- IsErrorPage
- pageEncoding
- errorPage
- isELIgonored
Детальніше про кожен атрибут
- мова : визначає мову програмування (базову мову), яка використовується на сторінці.
Синтаксис мови:
<%@ page language="value" %>
Тут значенням є мова програмування (основна мова)
Приклад:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
Пояснення коду: У наведеному вище прикладі значенням мови атрибутів є Java, яка в цьому випадку є базовою мовою. Отже, код у тегах виразів буде скомпільований за допомогою компілятора Java.
- 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, який знаходиться в пакеті demotest, і він розширить всі функції класу.
- Імпорт : Цей атрибут є найбільш вживаним атрибутом в атрибутах директиви сторінки. Він використовується для вказівки контейнеру імпортувати інші класи Java, інтерфейси, перерахування тощо під час генерації коду сервлета. Він подібний до операторів імпорту в класах 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 :
- Він визначає схему кодування символів, тобто використовується для встановлення типу вмісту та набору символів відповіді
- Типом вмісту за замовчуванням є "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. Значення атрибута сеансу за замовчуванням істинне, і сеанс створюється.
Якщо для нього встановлено значення false, тоді ми можемо вказати компілятору, що не створює сеанс за замовчуванням.
Синтаксис сеансу:
<%@ page session="true/false"%>
У цьому випадку для атрибуту сесії можна встановити значення true або false
Приклад:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"session="false"%>
Пояснення коду:
У наведеному вище прикладі для атрибута session встановлено значення "false", отже, ми вказуємо, що ми не хочемо створювати жодного сеансу в цьому JSP
- isThreadSafe:
- Він визначає модель потоку для сформованого сервлету.
- Це вказує на рівень безпеки потоків, реалізований на сторінці.
- Його значення за замовчуванням істинне, тому одночасне
- Ми можемо використовувати цей атрибут для реалізації інтерфейсу 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", отже буде виконана синхронізація, і можна використовувати кілька потоків.
- Автомивка:
Цей атрибут вказує на те, що буферизований вихід повинен бути очищений автоматично чи ні, і значення за замовчуванням для цього атрибута має значення true.
Якщо для значення встановлено значення false, буфер не буде автоматично змито, а якщо він заповнений, ми отримаємо виняток.
Якщо буфера немає, тоді помилка є нелегітимною, і буферизації немає, тому вона буде автоматично очищена.
Синтаксис autoFlush:
<% @ page autoFlush="true/false" %>
Тут true / false вказує, чи потрібно робити буферизацію чи ні
Приклад:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"autoFlush="false"%>
Пояснення коду:
У наведеному вище коді для автоматичного змивання встановлено значення false і, отже, буферизація не виконується, і він вручну змиває вихідні дані.
- Буфер:
- Використовуючи цей атрибут, вихідний об'єкт відповіді може бути буферизованим.
- За допомогою цього атрибута ми можемо визначити розмір буферизації, а розмір за замовчуванням - 8 КБ.
- Він спрямовує сервлет писати буфер перед записом в об'єкт відповіді.
Синтаксис буфера:
<%@ page buffer="value" %>
Тут значення представляє розмір буфера, який повинен бути визначений. Якщо буфера немає, тоді ми можемо писати як ніякий, а якщо не згадуємо жодне значення, то за замовчуванням 8 КБ
Приклад:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"buffer="16KB"%>
Пояснення коду:
У наведеному вище коді розмір буфера згадується як 16 КБ, де буфер має такий розмір
- 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", якщо не вказано будь-яке інше.
Синтаксис кодування сторінки:
<%@ page pageEncoding="vaue" %>
Тут значення вказує значення набору символів для JSP
Приклад:
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"isErrorPage="true"%>
Пояснення коду:
У наведеному вище коді "pageEncoding" встановлено за замовчуванням кодировку ISO-8859-1
- errorPage:
Синтаксис 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"%>Директива Гуру JSP1 Дата: <% = new java.util.Date ()%>
Пояснення коду:
Рядок коду 1-2: Тут ми визначили чотири атрибути, тобто
- Мова: В якості мови програмування встановлено Java
- contentType: встановлюється як text / html, щоб повідомляти компілятору, що html має бути форматом
- pageEncoding: у цьому атрибуті встановлено набір символів за замовчуванням
- isELIgnored: Тег виразу хибний, отже, він не ігнорується
Рядок коду 3: Тут ми використали атрибут імпорту, і він імпортує "Клас дати", який є з пакета утилізації Java, і ми намагаємося відобразити поточну дату в коді.
Коли ви виконаєте наведений вище код, ви отримаєте наступний результат
Вихід :
- Дата: поточна дата за допомогою методу дати класу дати
Директива JSP Include
- JSP "директива включення" (код 8) використовується для включення одного файлу в інший файл
- Цей включений файл може бути HTML, JSP, текстовими файлами тощо.
- Це також корисно для створення шаблонів з переглядами користувачів та розбиття сторінок на дії верхнього та нижнього колонтитула та бічної панелі.
- Він включає файл на етапі перекладу
Синтаксис директиви include:
<%@ 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: У цьому коді ми використовуємо теги включення, де ми включаємо файл director_header_jsp3.jsp в основний файл (_jsp2.jsp) і отримуємо вихідні дані як основного, так і включеного файлу.
Directive_header_jsp3.jsp:
Рядок коду 11-12: Ми взяли кількість змінних, ініціалізовану до 1, а потім збільшили її. Це дасть результат у основному файлі, як показано нижче.
При виконанні наведеного вище коду ви отримуєте такий результат:
Вихід:
- Результатом є файл заголовка: 2: це основний файл
- Вихідні дані виконуються з файлу Directive_jsp2.jsp, тоді як включений файл Directive_header_jsp3.jsp буде скомпільований спочатку.
- Після завершення включеного файлу виконується основний файл, і результат буде з головного файлу "Це основний файл". Отже, ви отримаєте результат у вигляді "Файл заголовка: 2" з _jsp3.jsp та "Це основний файл" з _jsp2.jsp.
Директива JSP Тагліб
- Директива JSP taglib використовується для визначення бібліотеки тегів із "taglib" як префікс, який ми можемо використовувати в JSP.
- Детальніше буде розглянуто в розділі Спеціальні теги JSP
- Директива 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 префікс = "gurutag" uri = "http://java.sun.com/jsp/jstl/core"%>Директива гуру JSP
Пояснення коду:
Рядок коду 3: Тут "taglib" визначається з атрибутами uri та префіксом.
Рядок коду 9: "gurutag" - це спеціальний тег, який можна використовувати де завгодно