Директивы JSP
Что такое директивы JSP?
- Директивы JSP — это сообщения в JSP-контейнер. Они предоставляют глобальную информацию обо всей странице JSP.
- Директивы JSP используются для передачи контейнеру специальных инструкций по трансляции JSP в код сервлета.
- На этапе жизненного цикла JSP JSP необходимо преобразовать в сервлет, что является этапом трансляции.
- Они дают контейнеру инструкции о том, как обрабатывать определенные аспекты обработки JSP.
- Директивы могут иметь множество атрибутов, разделенных запятыми, в виде пар ключ-значение.
- В JSP директива описана в
<%@ %>
теги.
Синтаксис директивы:
<%@ directive attribute="" %>
Типы директив в JSP
В JSP существует три типа директив:
- Директива страницы
- Включить директиву
- Директива Taglib
Каждый из них подробно описан ниже с примерами:
1) Директива страницы JSP
Синтаксис директивы Page:
<%@ page…%>
- Он предоставляет атрибуты, которые применяются ко всей странице JSP.
- Он определяет атрибуты, зависящие от страницы, такие как язык сценариев, страница ошибок и требования к буферизации.
- Он используется для предоставления инструкций контейнеру, который относится к текущей странице JSP.
Ниже приведен список атрибутов, связанных с директивой страницы:
- Язык
- Расширяет
- Импортировать
- Тип содержимого
- info
- Сессия
- isThreadSafe
- автозапуск
- буфер
- Исеррорпаже
- кодировка страницы
- страница ошибки
- isELIgonored
Подробнее о каждом атрибуте
1) язык: Он определяет язык программирования (основной язык), используемый на странице.
Синтаксис языка:
<%@ page language="value" %>
Здесь значение — это язык программирования (основной язык).
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Расшифровка кода: В приведенном выше примере значение атрибута языка равно Java какой язык является основным в данном случае. Следовательно, код в тегах выражений будет скомпилирован с использованием компилятора Java.
2) Расширяет: этот атрибут используется для расширения (наследования) класса, как это делает JAVA.
Синтаксис расширений:
<%@ page extends="value" %>
Здесь значение представляет класс, от которого оно должно быть унаследовано.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page extends="demotest.DemoClass" %>
Расшифровка кода: В приведенном выше коде JSP расширяет DemoClass, который находится в пакете demotest, и расширяет все функции класса.
3) Импорт: этот атрибут наиболее часто используется в атрибутах директив страницы. Он используется, чтобы указать контейнеру импортировать другие классы 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 (все служебные классы), и он может использовать все методы следующего класса.
4) тип контента:
- Он определяет схему кодировки символов, т. е. используется для установки типа контента и набора символов ответа.
- Тип contentType по умолчанию:
"text/html; charset=ISO-8859-1"
.
Синтаксис типа контента:
<%@ page contentType="value" %>
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
Расшифровка кода:
В приведенном выше коде тип контента установлен как text/html, он устанавливает кодировку символов для JSP и для сгенерированной страницы ответа.
5) информация
- Он определяет строку, доступ к которой можно получить с помощью метода 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().
6) Сессия
- Страница JSP создает сеанс по умолчанию.
- Иногда нам не нужно создавать сеанс в JSP, и поэтому в этом случае мы можем установить этот атрибут в false. Значение атрибута session по умолчанию — true, и сеанс создается. Когда он установлен в false, мы можем указать компилятору не создавать сеанс по умолчанию.
Синтаксис сеанса:
<%@ page session="true/false"%>
Здесь, в этом случае, атрибут сеанса может быть установлен в значение true или false.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" session="false"%>
Расшифровка кода:
В приведенном выше примере для атрибута сеанса установлено значение «false», поэтому мы указываем, что не хотим создавать сеанс в этом JSP.
7) 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», поэтому будет выполнена синхронизация и можно будет использовать несколько потоков.
8) Автопромывка:
Этот атрибут указывает, что буферизованный вывод должен быть очищен автоматически или нет, и значение этого атрибута по умолчанию равно true. Если значение равно false, буфер не будет очищен автоматически, а если он заполнен, мы получим исключение. Если буфер равен none, то false недопустим, и буферизация отсутствует, поэтому он будет очищен автоматически.
Синтаксис autoFlush:
<% @ page autoFlush="true/false" %>
Здесь true/false указывает, нужно ли выполнять буферизацию или нет.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
Расшифровка кода:
В приведенном выше коде для параметра autoflush установлено значение false, и, следовательно, буферизация не будет выполняться, и выходные данные будут сброшены вручную.
9) Buffer:
- Используя этот атрибут, объект выходного ответа может быть буферизован.
- Мы можем определить размер буферизации, которая будет выполняться, используя этот атрибут, и размер по умолчанию составляет 8 КБ.
- Он предписывает сервлету записать буфер перед записью в объект ответа.
Синтаксис буфера:
<%@ page buffer="value" %>
Здесь значение представляет размер буфера, который необходимо определить. Если буфера нет, то мы можем писать как его нет, а если мы не указываем какое-либо значение, то значение по умолчанию — 8 КБ.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
Расшифровка кода:
В приведенном выше коде размер буфера указан как 16 КБ, причем буфер будет такого размера.
10) isErrorPage:
- Это указывает на то, что страница JSP, имеющая errorPage, будет проверена на другой странице JSP.
- Любой файл JSP, объявленный с атрибутом «isErrorPage», может получать исключения от других страниц JSP, на которых есть страницы с ошибками.
- Исключения доступны только для этих страниц.
- Значение по умолчанию неверно.
Синтаксис isErrorPage:
<%@ page isErrorPage="true/false"%>
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" isErrorPage="true"%>
Расшифровка кода:
В приведенном выше коде для isErrorPage установлено значение true. Следовательно, он проверит, что все другие JSP имеют установленный атрибут errorPage (описанный в следующем атрибуте) и могут обрабатывать исключения.
11) Кодирование страницы:
Атрибут «pageEncoding» определяет кодировку символов для страницы JSP. По умолчанию указывается «ISO-8859-1», если не указано иное.
Синтаксис кодировки страницы:
<%@ page pageEncoding="vaue" %>
Здесь значение указывает значение кодировки для JSP.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" isErrorPage="true"%>
Расшифровка кода:
В приведенном выше коде для «pageEncoding» установлена кодировка по умолчанию ISO-8859-1.
12) Страница ошибки:
Этот атрибут используется для установки страницы ошибки для страницы JSP, если JSP генерирует исключение, а затем перенаправляет на страницу исключения.
Синтаксис errorPage:
<%@ page errorPage="value" %>
Здесь значение представляет значение страницы ошибки JSP.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1" errorPage="errorHandler.jsp"%>
Расшифровка кода:
В приведенном выше коде для обработки исключений у нас есть errroHandler.jsp.
13) игнорируется:
- 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 имеет значение true и, следовательно, Язык выражений (EL) здесь игнорируется. В примере ниже мы используем четыре атрибута (строка кода 1-2)
Пример с четырьмя атрибутами
<%@ 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>
Расшифровка кода:
Строка кода 1–2: Здесь мы определили четыре атрибута, т.е.
- Язык: установлен как Java как язык программирования
- contentType: установите как text/html, чтобы сообщить компилятору, что html должен быть в формате.
- pageEncoding: в этом атрибуте установлена кодировка по умолчанию.
- isELIgnored: Тег выражения имеет значение false, поэтому он не игнорируется.
Строка кода 3: Здесь мы использовали атрибут импорта, и он импортирует «класс даты», взятый из Java util, и мы пытаемся отобразить в коде текущую дату.
Когда вы выполните приведенный выше код, вы получите следующий вывод
Результат:
- Дата: текущая дата с использованием метода даты класса даты.
2) Директива включения JSP
- «Директива включения» 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" %> <!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 (который включен в основной файл)
<%@ 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>
Расшифровка кода:
Директива_jsp2.jsp:
Строка кода 3: В этом коде мы используем теги включения, в которых мы включаем файл Directive_header_jsp3.jsp в основной файл (_jsp2.jsp) и получаем выходные данные как основного файла, так и включаемого файла.
Directive_header_jsp3.jsp:
Строка кода 11–12: Мы взяли переменную count, инициализированную значением 1, а затем увеличили ее. Это даст вывод в основном файле, как показано ниже.
Когда вы выполните приведенный выше код, вы получите следующий результат:
Вывод:
- На выходе получается файл заголовка: 2: это основной файл.
- Вывод выполняется из файла Directive_jsp2.jsp, а включаемый файл Directive_header_jsp3.jsp будет скомпилирован первым.
- После завершения работы включаемого файла выполняется основной файл, и вывод будет из основного файла «Это основной файл». Таким образом, вы получите вывод в виде «Файл заголовка: 2» из _jsp3.jsp и «Это основной файл» из _jsp2.jsp.
3) Директива JSP Taglib
- Директива 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 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>
Расшифровка кода:
Строка кода 3: Здесь «taglib» определяется атрибутами uri и префиксом.
Строка кода 9: «gurutag» — это определенный пользовательский тег, который можно использовать где угодно.