Учебники

5) Действия JSP

Что такое директивы JSP?

  • Директивы JSP — это сообщения в контейнер JSP. Они предоставляют глобальную информацию обо всей странице JSP.
  • Директивы JSP используются для предоставления специальной инструкции контейнеру для преобразования JSP в код сервлета.
  • На этапе жизненного цикла JSP JSP должен быть преобразован в сервлет, который является фазой перевода.
  • Они дают инструкции контейнеру о том, как обрабатывать определенные аспекты обработки JSP.
  • Директивы могут иметь много атрибутов через запятую, разделенных как пары ключ-значение.
  • В JSP директива описана в тегах <% @%>.

Синтаксис Директивы:

<%@ directive attribute="" %>

Существует три типа директив:

  1. Директива страницы
  2. Включить директиву
  3. Директива Taglib

Каждый из них подробно описан ниже с примерами:

В этом уроке вы узнаете —

Директива JSP Page

Синтаксис директивы Page:

<%@ page…%>
  • Он предоставляет атрибуты, которые применяются ко всей странице JSP.
  • Он определяет зависящие от страницы атрибуты, такие как язык сценариев, страница ошибок и требования к буферизации.
  • Он используется для предоставления инструкций контейнеру, который относится к текущей странице JSP.

Ниже приведен список атрибутов, связанных с директивой страницы:

  1. язык
  2. Расширяет
  3. Импортировать
  4. Тип содержимого
  5. Информация
  6. сессия
  7. isThreadSafe
  8. AutoFlush
  9. буфер
  10. IsErrorPage
  11. pageEncoding
  12. errorPage
  13. isELIgonored

Подробнее о каждом атрибуте

  1. язык : определяет язык программирования (базовый язык), используемый на странице.

    Синтаксис языка:

    <%@ page language="value" %>

    Здесь значение — это язык программирования (основной язык)

Пример:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

Объяснение кода: В приведенном выше примере значением языка атрибута является Java, который в данном случае является базовым языком. Следовательно, код в тегах выражений будет компилироваться с использованием компилятора Java.

  1. 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, который входит в демотест, и расширяет все функции класса.

  1. Импорт : Этот атрибут является наиболее часто используемым атрибутом в атрибутах директивы страницы. Он используется для указания контейнеру импортировать другие классы 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 (все служебные классы), и он может использовать все методы следующего класса.

  1. 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 и для сгенерированной страницы ответа.

  1. Информация
  • Он определяет строку, к которой можно получить доступ методом getServletInfo ().
  • Этот атрибут используется для установки описания сервлета.

Синтаксис информации:

<%@ page info="value" %>

Здесь значение представляет информацию сервлета.

Пример:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    info="Guru Directive JSP" pageEncoding="ISO-8859-1"%>

Пояснение к коду:

В приведенном выше коде строку «Директива гуру JSP» можно получить с помощью интерфейса сервлета с помощью getServletInfo ()

  1. сессия
  • Страница JSP создает сессию по умолчанию.
  • Иногда нам не нужно создавать сеанс в JSP, и, следовательно, мы можем установить для этого атрибута значение false в этом случае. Значением по умолчанию атрибута сеанса является true, и сеанс создается.

    Когда для него установлено значение false, мы можем указать компилятору не создавать сеанс по умолчанию.

Синтаксис сессии:

<%@ page session="true/false"%>

Здесь в этом случае атрибут сеанса может быть установлен в true или false

Пример:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    session="false"%>

Объяснение кода:

В приведенном выше примере атрибут сеанса имеет значение «ложь», поэтому мы указываем, что мы не хотим создавать какой-либо сеанс в этой JSP

  1. 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», поэтому будет выполнена синхронизация и могут использоваться несколько потоков.

  1. AutoFlush:

Этот атрибут указывает, что буферизованный вывод должен очищаться автоматически или нет, и значение по умолчанию этого атрибута — true.

Если значение установлено в false, буфер не будет очищаться автоматически, и если он заполнен, мы получим исключение.

Когда в буфере нет ни одного, ложное значение незаконно, и буферизация отсутствует, поэтому он будет сброшен автоматически.

Синтаксис autoFlush:

<% @ page autoFlush="true/false" %>

Здесь true / false представляет, должна ли буферизация выполняться или нет

Пример:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    autoFlush="false"%>

Пояснение к коду:

В приведенном выше коде для функции autoflush задано значение false, и, следовательно, буферизация не будет выполнена, и он вручную сбросил вывод.

  1. буфер:
  • Используя этот атрибут, объект выходного ответа может быть буферизован.
  • Мы можем определить размер буферизации, который будет выполняться с помощью этого атрибута, и размер по умолчанию составляет 8 КБ.
  • Он направляет сервлет записать буфер перед записью в объект ответа.

Синтаксис буфера:

<%@ page buffer="value" %>

Здесь значение представляет размер буфера, который должен быть определен. Если буфера нет, то мы можем записать как none, и если мы не упомянем какое-либо значение, то по умолчанию будет 8KB

Пример:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    buffer="16KB"%>

Пояснение к коду:

В приведенном выше коде размер буфера упоминается как 16 КБ, где буфер будет иметь этот размер

  1. 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 (описан в следующем атрибуте), и может обрабатывать исключения.

  1. 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

  1. errorPage:

Этот атрибут используется для установки страницы ошибки для страницы JSP, если JSP генерирует исключение, а затем перенаправляет на страницу исключения.

Синтаксис errorPage:

<%@ page errorPage="value" %>

Здесь значение представляет значение страницы JSP ошибки

Пример:

<%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
    errorPage="errorHandler.jsp"%>

Пояснение к коду:

В приведенном выше коде для обработки исключений у нас есть errroHandler.jsp

  1. 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)

Пример с четырьмя атрибутами

  1. <%@ page language="java" contentType="text/html;" pageEncoding="ISO-8859-1"
  2. isELIgnored="false"%>
  3. <%@page import="java.util.Date" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  8. <title>Directive Guru JSP1</title>
  9. </head>
  10. <body>
  11. <a>Date is:</a>
  12. <%= new java.util.Date() %>
  13. </body>
  14. </html>

Пояснение к коду:

Строка кода 1-2: Здесь мы определили четыре атрибута, т.е.

  • Язык: устанавливается как Java как язык программирования
  • contentType: установить как text / html, чтобы сообщить компилятору, что html должен быть отформатирован
  • pageEncoding: в этом атрибуте установлена ​​кодировка по умолчанию
  • isELIgnored: тег выражения равен false, поэтому он не игнорируется

Строка кода 3: Здесь мы использовали атрибут import, и он импортирует «класс Date» из пакета утилит Java, и мы пытаемся отобразить текущую дату в коде.

Когда вы выполните приведенный выше код, вы получите следующий вывод

Действия JSP: неявные объекты JSP, директива Page, директива Include, директива Taglib

Выход :

  • Дата: текущая дата с использованием метода даты в классе даты

JSP Включить директиву

  • JSP «директива включения» (кодовая строка 8) используется для включения одного файла в другой файл
  • Этот включенный файл может быть HTML, JSP, текстовыми файлами и т. Д.
  • Это также полезно при создании шаблонов с пользовательскими представлениями и разбиении страниц на действия верхнего и нижнего колонтитула и боковой панели.
  • Включает файл на этапе перевода

Синтаксис директивы include:

<%@ include….%>

Пример:

Directive_jsp2.jsp (Основной файл)

  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  2. pageEncoding="ISO-8859-1"%>
  3. <%@ include file="directive_header_jsp3.jsp" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  8. <title>Guru Directive JSP2</title>
  9. </head>
  10. <body>
  11. <a>This is the main file</a>
  12. </body>
  13. </html>

Directive_header_jsp3.jsp (который входит в основной файл)

  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  2. pageEncoding="ISO-8859-1"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  7.  
  8. </head>
  9. <body>
  10. <a>Header file : </a>
  11. <%int count =1; count++;
  12. out.println(count);%> :
  13. </body>
  14. </html>

Пояснение к коду:

Directive_jsp2.jsp:

Строка кода 3: В этом коде мы используем теги include, в которые мы включаем файл directive_header_jsp3.jsp в основной файл (_jsp2.jsp) и получаем выходные данные как основного файла, так и включенного файла.

Directive_header_jsp3.jsp:

Строка кода 11-12: мы взяли переменную count, инициализированную в 1, а затем увеличили ее. Это даст вывод в основном файле, как показано ниже.

Когда вы выполните приведенный выше код, вы получите следующий вывод:

Действия JSP: неявные объекты JSP, директива Page, директива Include, директива Taglib

Вывод:

  • Выходные данные — заголовочный файл: 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» — именем тега.

Пример:

  1. <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
  2. pageEncoding="ISO-8859-1"%>
  3. <%@ taglib prefix="gurutag" uri="http://java.sun.com/jsp/jstl/core" %>
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  5. <html>
  6. <head>
  7. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  8. <title>Guru Directive JSP</title>
  9. <gurutag:hello/>
  10. </head>
  11. <body>
  12. </body>
  13. </html>

Пояснение к коду:

Строка кода 3: Здесь «taglib» определяется атрибутами uri и префиксом.

Строка кода 9: «gurutag» — это пользовательский тег, который можно использовать где угодно