Что такое директивы JSP?
- Директивы JSP — это сообщения в контейнер JSP. Они предоставляют глобальную информацию обо всей странице JSP.
- Директивы JSP используются для предоставления специальной инструкции контейнеру для преобразования JSP в код сервлета.
- На этапе жизненного цикла JSP JSP должен быть преобразован в сервлет, который является фазой перевода.
- Они дают инструкции контейнеру о том, как обрабатывать определенные аспекты обработки JSP.
- Директивы могут иметь много атрибутов через запятую, разделенных как пары ключ-значение.
- В JSP директива описана в тегах <% @%>.
Синтаксис Директивы:
<%@ directive attribute="" %>
Существует три типа директив:
- Директива страницы
- Включить директиву
- Директива Taglib
Каждый из них подробно описан ниже с примерами:
В этом уроке вы узнаете —
Директива JSP Page
Синтаксис директивы Page:
<%@ page…%>
- Он предоставляет атрибуты, которые применяются ко всей странице JSP.
- Он определяет зависящие от страницы атрибуты, такие как язык сценариев, страница ошибок и требования к буферизации.
- Он используется для предоставления инструкций контейнеру, который относится к текущей странице JSP.
Ниже приведен список атрибутов, связанных с директивой страницы:
- язык
- Расширяет
- Импортировать
- Тип содержимого
- Информация
- сессия
- isThreadSafe
- AutoFlush
- буфер
- 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, который входит в демотест, и расширяет все функции класса.
- Импорт : Этот атрибут является наиболее часто используемым атрибутом в атрибутах директивы страницы. Он используется для указания контейнеру импортировать другие классы 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 :
- Он определяет схему кодировки символов, т.е. он используется для установки типа контента и набора символов ответа.
- Типом по умолчанию для 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"%>
Пояснение к коду:
В приведенном выше коде строку «Директива гуру 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"%>
Объяснение кода:
В приведенном выше примере атрибут сеанса имеет значение «ложь», поэтому мы указываем, что мы не хотим создавать какой-либо сеанс в этой 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», поэтому будет выполнена синхронизация и могут использоваться несколько потоков.
- AutoFlush:
Этот атрибут указывает, что буферизованный вывод должен очищаться автоматически или нет, и значение по умолчанию этого атрибута — true.
Если значение установлено в false, буфер не будет очищаться автоматически, и если он заполнен, мы получим исключение.
Когда в буфере нет ни одного, ложное значение незаконно, и буферизация отсутствует, поэтому он будет сброшен автоматически.
Синтаксис autoFlush:
<% @ page autoFlush="true/false" %>
Здесь true / false представляет, должна ли буферизация выполняться или нет
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" autoFlush="false"%>
Пояснение к коду:
В приведенном выше коде для функции autoflush задано значение false, и, следовательно, буферизация не будет выполнена, и он вручную сбросил вывод.
- буфер:
- Используя этот атрибут, объект выходного ответа может быть буферизован.
- Мы можем определить размер буферизации, который будет выполняться с помощью этого атрибута, и размер по умолчанию составляет 8 КБ.
- Он направляет сервлет записать буфер перед записью в объект ответа.
Синтаксис буфера:
<%@ page buffer="value" %>
Здесь значение представляет размер буфера, который должен быть определен. Если буфера нет, то мы можем записать как none, и если мы не упомянем какое-либо значение, то по умолчанию будет 8KB
Пример:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" buffer="16KB"%>
Пояснение к коду:
В приведенном выше коде размер буфера упоминается как 16 КБ, где буфер будет иметь этот размер
- 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 (описан в следующем атрибуте), и может обрабатывать исключения.
- PageEncoding:
Атрибут «pageEncoding» определяет кодировку символов для страницы JSP.
По умолчанию указано «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:
Этот атрибут используется для установки страницы ошибки для страницы JSP, если JSP генерирует исключение, а затем перенаправляет на страницу исключения.
Синтаксис 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 имеет значение 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: Здесь мы использовали атрибут import, и он импортирует «класс Date» из пакета утилит Java, и мы пытаемся отобразить текущую дату в коде.
Когда вы выполните приведенный выше код, вы получите следующий вывод
Выход :
- Дата: текущая дата с использованием метода даты в классе даты
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>
Пояснение к коду:
Directive_jsp2.jsp:
Строка кода 3: В этом коде мы используем теги include, в которые мы включаем файл 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.
Директива JSP Taglib
- Директива taglib JSP используется для определения библиотеки тегов с префиксом taglib, который мы можем использовать в JSP.
- Более подробная информация будет рассмотрена в разделе «Пользовательские теги JSP».
- Директива taglib JSP используется на страницах 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» — это пользовательский тег, который можно использовать где угодно