В программировании на том или ином языке приходится учитывать огромное количество особенностей. Java – универсальный современный способ создания контента кроссплатформенного типа. Его достаточно легко освоить, а вот с применением возникают некие трудности. Особенно если нужно создавать серверные приложения.
В данной статье познакомимся с технологией под названием JSP. Она активно применяется при написании определенного типа веб-страничек. Освоить оную рекомендуется из-за того, что с ее помощью удастся довольно быстро делать HTML-сайты.
Что это такое
JSP расшифровывается как Java Server Pages. Это технология, которая позволяет разработчикам веб-контента создавать содержимое с динамическими и статическими компонентами. Странички JSP включают в себя текст разного типа. Первый вариант – статическая исходная информация. Она может быть представлена в:
Второй тип текста – JSP элементы. Они отвечают за создание динамического содержимого. Также допускается применение полноценной библиотеки JSP тегов и EL. Все это помогает внедрить Java-код в статичное содержимое JSP-страничек.
JSP – это некая платформенно-независимая технология, используемая для написания HTML динамического характера. Теги здесь применяются для того, чтобы извлекать информацию из БД, обмениваться имеющимися сведениями и так далее. Для запуска часто применяются среды IDE NetBeans или Eclipse.
Несколько слов о сервлетах
Говоря о HTML и серверных утилитах, стоит обратить внимание на такую особенность, как сервлет. Это специальный программный модуль, который используется для обработки запросов клиентов. Отвечает за реализацию интерфейса сервлета. Находится на серверной стороне.
Работает по принципу запрос-ответ. Используются преимущественно для расширения веб-servers. Принцип работы несколько напоминает JSP.
Чем Java Server Page лучше Servlets
Каждый программист при написании HTML странички должен решить, каким функционалом выбранного языка пользоваться. Первая рассматриваемая технология обладает рядом преимуществ перед сервлетами:
- Отвечает за возможность создания и управления HTML динамического типа. В данном случае процессы будут осуществляться более просто.
- Для работы не требуется загрузка дополнительного программного обеспечения или документов. Пример – можно обойтись без файла класса java и web.xml.
- Обработка ведется web-container для всех корректировок кода. Это приводит к тому, что JSP помогает избежать перекомпиляции.
А еще доступ здесь осуществляется напрямую. Сервлеты требуют предварительного проведения сопоставления с web.xml.
О важности технологии
Стоит обратить внимание на то, что JSP – это то, с чем должен ознакомиться каждый программер. Связано это с несколькими причинами. Для начала нужно рассмотреть возможности и сферы применения технологии. Она дает возможность:
- получения информации из HTML страницы в Java-коде;
- отправлять электронные материалы из Java на HTML;
- заниматься написанием Джава-кода непосредственно внутри HTML (но лучше не слишком часто пользоваться соответствующим приемом).
Знать упомянутую технологию важно по нескольким причинам. А именно:
- это одна из ключевых особенностей веб-технологий в Джаве;
- применяется в крупных компаниях и сложных проектах;
- хорошо интегрируется с сервлетами Джавы внутри контейнера сервлетов.
JSV – база для тех, кто планирует заниматься HTML и серверными утилитами. Облегчает и ускоряет работу любого программера.
Цикл жизни
Следующий момент, достойный внимания – это жизненный цикл JSP. Он полностью повторяет servlet, но имеет один дополнительный шаг. Во время него происходит компиляция рассматриваемой технологии в сервлет.
На представленной схеме можно наглядно увидеть, как выглядит соответствующий жизненный цикл. Каждый этап обладает собственными нюансами.
Перевод – самое начало
Это – первый этап. Здесь происходит следующее:
- Контейнер переводит JSP документ в код Джавы. Он выступает сервлетом.
- Перевод проводится в автоматическом режиме через веб-сервер.
- Последний находит и проверяет достоверность, а затем производит запись сервлета для JPS page.
Здесь никаких проблем с пониманием быть не должно.
Компиляция – шаг два
После описанных ранее действий контейнер JSP будет компилировать исходный Java-код. Это необходимо для того, чтобы создавать следующие servlets и сгенерированный классовый файл.
Загружаем и инициализируем – шаг три
Третий этап предусматривает следующее:
- JSP Container загружает ранее созданный servlet.
- Если процесс прошел правильно, будет создан экземпляр класса сервлета.
- Важно учесть, что здесь используется конструктор, не имеющий никаких аргументов.
- Контейнер JSP проводит инициализацию экземпляра объекта через вызов метода init. Он реализуется container посредством обращения к jspInit().
Элемент кода выше наглядно демонстрирует, каким образом осуществляется инициализация экземпляра.
Выполнение – шаг четыре
Теперь, когда основные этапы позади, происходит не менее важный момент – выполнение. Здесь технология JSP вызовет метод _jspService(). У него два параметра:
- httpServletRequest;
- HttpServletResponse.
Вызывается рассматриваемый метод всего один раз для каждого отдельного запроса.
Упомянутый метод будет отвечать за генерацию ответов на посланный запрос.
Разрушение – логическое завершение
На данном этапе целесообразно говорить о прекращении жизненного цикла.
При разрушении контейнер будет удалять JSP при помощи jspDestroy(). Как это происходит, указано на наглядном примере выше.
Первый проект – tutorial
Для того, чтобы лучше разобраться в HTML и динамических страницах, созданных через рассматриваемую технологию, рекомендуется создать первый проект. Приведенный пример будет реализован через Eclipse.
Чтобы воспользоваться первым приложением JSP, необходимы следующие «компоненты»:
- Java;
- JSP;
- Apache Tomcat 8;
- Eclipse IDE.
Разобраться с соответствующей технологией HTML не составляет никакого труда, если действовать последовательно.
Создание проекта
Для того, чтобы создавать страницы JSP и подобного рода приложения, можно действовать следующим образом:
- Создать новый проект динамического характера.
- Добавить имя разработки. Пусть будет RankWebApplication.
- Нажать на кнопку Next.
- Далее предстоит осуществить настройку проекта. Шаг рекомендуется пропустить, так как в примере речь идет лишь о демонстрационной разработке.
- Создавать web.xml не нужно. Этот факт требуется подтвердить в настройках веб-модуля.
- Щелкнуть по кнопке с надписью «Готово».
- Составить структуру каталогов имеющегося проекта.
- Нажать ПКМ по каталогу «Веб Контент» и добавить новый файл JSP в разработку.
- Назвать файл как NewRankFile.jsp.
- Подтвердить операцию.
- После того, как описанные действия останутся позади, произойдет создание нового файла. В «листинг 1» необходимо добавить html body, предложенное ниже. Он отвечает за выведение рейтинга команд по крикету.
- Запустить проект, кликнув ПКМ по оному. Далее предстоит щелкнуть по надписи «Запуск от имени».
- Выбрать «Запустить на сервере». После этого необходимо собственноручно определить новый сервер Tomcat. Это необходимо для первого проекта в Эклипсе. Требуется поставить отметку около «Всегда использовать данный server для этого проекта». При подобных обстоятельствах не придется осуществлять повторный выбор.
- На экране появится рейтинги UCC и время обновления HTML. Оно будет сгенерировано через JSP выражение. Выходной ссылкой выступает http://localhost:8080/RankWebApplication/NewRankFile.jsp.
По итогу на экране появится картинка, представленная выше. Это – первый ознакомительный проект, наглядно показывающий принцип работы JSP.
Директивы
Теги директивного типа – средства создания указаний направления и инструкций. Оные должны использоваться тогда, когда происходит перевод жизненного цикла JSP. Они оказывают воздействие полностью на структуру класса сервлета.
Обычно обладают весьма простым синтаксисом:
При желании можно объединить установку нескольких имеющихся атрибутов для одной директивы:
Директивы бывают нескольких типов:
Каждый вариант предусматривает собственную область применения и особенности. Далее они будут рассмотрены в полной мере.
Директивы страницы
Тег, который предусматривает инструкции и указания для переводчика в момент перевода жизненного цикла JSP для HTML. Включается в любом место. Разработчики имеют негласное правило – тег директивы страницы устанавливается в самом верху кодификации.
Синтаксис представлен на элементе кода выше. А ниже – аналог в XML.
В качестве примера можно описать атрибут в виде импорта. Он включается в самом верху странички. Запись имеет следующую форму:
<%@ page import="java.util.Date" %>.
Атрибуты
Перед тем, как работать с директивами странички JSP, необходимо выучить возможные атрибуты. Они представлены в таблице ниже.
ИмяХарактеристикаLanguageОтвечает за определение языка, который применяется в криптлетах JSP файлов, выражениях или иных документах, включаемых к коду оттранслированного типа.Page ImportОпределение пакетов, которые были импортированы.ExtendsУстановка суперкласса для сервлета, который будет сгенерирован. Использовать крайне осторожно.SessionЕсли значение true – переменная session, которая была заранее определена, привязана к сессии при наличии таковой. В противном случае будет создаваться новая сессия. К ней осуществится непосредственная привязка. Если же значение false – сессии не используются. При обращении к переменной session возникает ошибка трансляции JSP страничек в сервлеты.BufferУстановка размера буфера для JSPWriterOut.autoFlushОтвечает за определение того, нужно ли будет проводить автоматическую очистку буфера при ошибках или переполненности.isThreadSafeПри параметре true устанавливается нормальная работа сервлета. Множественные запросы будут обрабатываться одновременно через один экземпляр. False показывает, что сервлет должен наследовать однопоточную модель. Здесь все запросы будут обрабатываться отдельными экземплярами класса.errorPageСтраница, которая будет выводиться при ошибках, приводящих к исключениям.InfoОтвечает за определение строки информации о странице. Она доступа посредством метода getServletInfo().isErrorPageМожет ли HTML применяется для обработки ошибок иных JSP страничек. Изначально – нет.pageEncordingОпределение кодировки символов JSP. Изначально установлен charset из contentType.contentTypeОпределение кодировки для страницы JSP и ответа, а также MIME-тип ответа JSP.
Это лишь основы, которые должен знать каждый уважающий себя программер. Запоминать атрибуты и выучивать наизусть их вовсе не обязательно. Можно заглянуть в любой специализированный учебнику по изучаемой технологии. Там обязательно будут атрибуты тегов страницы.
Включение директивы
Тег include тоже применяется во время перевода жизненного цикла JSP. Необходим для включения файла. Отвечает за объединение содержимого еще нескольких файлов. Директива включения входит в любое место на HTML (странице).
<%@ include file="path/url" >
Выше приведен пример синтаксиса. Обладает всего одним атрибутом – file.
Тег Taglib
Этот вариант применяется для того, чтобы определить библиотеку пользовательских тегов. Дает возможность использования связанных тегов на одной страничке.
Выше пример синтаксиса. Если контейнер не смог обнаружить библиотеку тегов, возникает фатальная ошибка передачи (трансляции).
Скриптовые теги
Изучая tutorials по HTML и JSP, стоит обратить внимание на скриптовые теги. Они относятся к сценариям. Дают возможность добавления кода сценария в кодификацию Джавы для сгенерированной странички. Она создается переводчиком.
Бывает нескольких типов:
- Сценария. Отвечает за реализацию функциональности метода _jspService через написание кода Джавы. Применяется для создания соответствующей кодификации на JSP Page. Имеет вид:
- Декларативный. Применяется, чтобы объявлять переменные класса и реализацию методов класса jspInt и jspDestroy:
- Выражение тега. Применяется для того, чтобы создавать Джава-выражения. Его нельзя заканчивать точкой с запятой, поставленные непосредственно в теге:
Эти основы помогут на первых порах разобраться с директивами JSP.
Языки выражения
Для того, чтобы получать доступ к информации приложения, которая хранится в JavaBeans, нужно использовать специальный язык. Он предусматривает разнообразные компоненты, которые даже у начинающего программера не вызовут никаких затруднений.
Операторы
Операторы могут быть:
- арифметическими;
- отношений;
Тут ситуация точно такая же, как и в случае с обычной математикой. Чтобы разобраться в оных, достаточно взять учебник по информатике.
Неявные объекты
Напрямую используются в EL выражении. Юзерам предоставляется возможность применения соответствующих элементов для того, чтобы извлекать атрибуты из тех или иных областей и значений параметров.
Выше представлены некоторые типы неявных объектов.
Методы
Не стоит забывать о методах. Огромную роль играют методы, которые доступны в классе Throwable.
Вот некоторые из них. Оные считаются самыми важными и используемыми на практике.
О получении полного спектра знаний – что лучше выбрать
Основы программирования поможет освоить любой учебник, посвященный данной тематике. Но пользователи, которые решили полноценно работать с JSP и HTML, должны изучить направление более развернуто. В данном случае предстоит выбрать грамотный подход:
- Обучение в ВУЗе. Ученик узнает, что такое input type и изучит основы программирования на Джаве. Долгий подход, зато по выпуску человеку будет выдан диплом.
- Самообразование. Никаких подтверждений наличия знаний не будет. Вариант хорош для тех, кто хочет быть самоучкой и не претендует на звание опытного разработчика в крупной компании.
- Обучение в техникуме. В России найти среднее профессиональное образование по направлению Java проблематично. Но такой вариант сгодится, если хочется продолжить после обучение в ВУЗе.
Лучший выход out of situation – это прохождение узкоспециализированных курсов с выдачей сертификатов. Можно учиться в любом месте и в любое время. Срок обучения – до года. Есть предложения и для новичков, и для опытных разработчиков.
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Технологии JSP: описание, особенности, использование OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="В программировании на том или ином языке приходится учитывать огромное количество особенностей. Java – универсальный современный способ создания контента кроссплатформенного типа. Его достаточно легко освоить, а вот с применением возникают некие трудности. Особенно если нужно создавать серверные приложения. В данной статье познакомимся с технологией под названием JSP. Она активно применяется при написании определенного типа веб-страничек." />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/tehnologii-jsp-opisanie-osobennosti-ispolzovanie/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/#article","name":"\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 JSP: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 OTUS","headline":"\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 JSP: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2022\/02\/oj-1080x720-6.png","width":1080,"height":720},"datePublished":"2022-02-03T19:25:52+00:00","dateModified":"2022-02-03T19:25:53+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, Java"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/#listItem","position":2,"name":"\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 JSP: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/#webpage","url":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/","name":"\u0422\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0438 JSP: \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 OTUS","description":"\u0412 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u043d\u0430 \u0442\u043e\u043c \u0438\u043b\u0438 \u0438\u043d\u043e\u043c \u044f\u0437\u044b\u043a\u0435 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439. Java \u2013 \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u043a\u0440\u043e\u0441\u0441\u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430. \u0415\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043b\u0435\u0433\u043a\u043e \u043e\u0441\u0432\u043e\u0438\u0442\u044c, \u0430 \u0432\u043e\u0442 \u0441 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043d\u0435\u043a\u0438\u0435 \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438. \u041e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0432\u0435\u0440\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u043c\u0441\u044f \u0441 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c JSP. \u041e\u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u0440\u0438 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0432\u0435\u0431-\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u0435\u043a.","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2022\/02\/oj-1080x720-6.png","@id":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/#mainImage","width":1080,"height":720},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/#mainImage"},"datePublished":"2022-02-03T19:25:52+00:00","dateModified":"2022-02-03T19:25:53+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/2845" /><link rel='shortlink' href='https://otus.ru/journal/?p=2845' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Ftehnologii-jsp-opisanie-osobennosti-ispolzovanie%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Ftehnologii-jsp-opisanie-osobennosti-ispolzovanie%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-2845 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-2845" class="the-post post-2845 post type-post status-publish format-standard has-post-thumbnail category-polza tag-java">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Технологии JSP: описание, особенности, использование
</h1>
<a href="https://otus.ru/journal/tehnologii-jsp-opisanie-osobennosti-ispolzovanie/" class="date-link" data-wpel-link="internal"><time class="post-date">3 февраля, 2022</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-6.png" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Технологии JSP: описание, особенности, использование" title="Технологии JSP: описание, особенности, использование" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-6-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-6-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-6-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-6-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-6-270x180.png 270w" data-src="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-6-770x515.png" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%A7%D1%82%D0%BE_%D1%8D%D1%82%D0%BE_%D1%82%D0%B0%D0%BA%D0%BE%D0%B5" title="Что это такое">Что это такое</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#%D0%9D%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE_%D1%81%D0%BB%D0%BE%D0%B2_%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%BB%D0%B5%D1%82%D0%B0%D1%85" title="Несколько слов о сервлетах">Несколько слов о сервлетах</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%A7%D0%B5%D0%BC_Java_Server_Page_%D0%BB%D1%83%D1%87%D1%88%D0%B5_Servlets" title="Чем Java Server Page лучше Servlets">Чем Java Server Page лучше Servlets</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%9E_%D0%B2%D0%B0%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B8" title="О важности технологии">О важности технологии</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%A6%D0%B8%D0%BA%D0%BB_%D0%B6%D0%B8%D0%B7%D0%BD%D0%B8" title="Цикл жизни">Цикл жизни</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%E2%80%93_%D1%81%D0%B0%D0%BC%D0%BE%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%BE" title="Перевод – самое начало">Перевод – самое начало</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-7" href="#%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_%E2%80%93_%D1%88%D0%B0%D0%B3_%D0%B4%D0%B2%D0%B0" title="Компиляция – шаг два">Компиляция – шаг два</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-8" href="#%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B6%D0%B0%D0%B5%D0%BC_%D0%B8_%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D1%83%D0%B5%D0%BC_%E2%80%93_%D1%88%D0%B0%D0%B3_%D1%82%D1%80%D0%B8" title="Загружаем и инициализируем – шаг три">Загружаем и инициализируем – шаг три</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%E2%80%93_%D1%88%D0%B0%D0%B3_%D1%87%D0%B5%D1%82%D1%8B%D1%80%D0%B5" title="Выполнение – шаг четыре">Выполнение – шаг четыре</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%A0%D0%B0%D0%B7%D1%80%D1%83%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%E2%80%93_%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B2%D0%B5%D1%80%D1%88%D0%B5%D0%BD%D0%B8%D0%B5" title="Разрушение – логическое завершение">Разрушение – логическое завершение</a></li></ul></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-11" href="#%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82_%E2%80%93_tutorial" title="Первый проект – tutorial">Первый проект – tutorial</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-12" href="#%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0" title="Создание проекта">Создание проекта</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-13" href="#%D0%94%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D1%8B" title="Директивы">Директивы</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-14" href="#%D0%94%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D1%8B_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B" title="Директивы страницы">Директивы страницы</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-15" href="#%D0%90%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D1%8B" title="Атрибуты">Атрибуты</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-16" href="#%D0%92%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D1%8B" title="Включение директивы">Включение директивы</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-17" href="#%D0%A2%D0%B5%D0%B3_Taglib" title="Тег Taglib">Тег Taglib</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-18" href="#%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D1%82%D0%B5%D0%B3%D0%B8" title="Скриптовые теги">Скриптовые теги</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-19" href="#%D0%AF%D0%B7%D1%8B%D0%BA%D0%B8_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F" title="Языки выражения">Языки выражения</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-20" href="#%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B" title="Операторы">Операторы</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-21" href="#%D0%9D%D0%B5%D1%8F%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B" title="Неявные объекты">Неявные объекты</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-22" href="#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B" title="Методы">Методы</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-23" href="#%D0%9E_%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8_%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B3%D0%BE_%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D1%80%D0%B0_%D0%B7%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9_%E2%80%93_%D1%87%D1%82%D0%BE_%D0%BB%D1%83%D1%87%D1%88%D0%B5_%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C" title="О получении полного спектра знаний – что лучше выбрать">О получении полного спектра знаний – что лучше выбрать</a></li></ul></nav></div>
<p>В программировании на том или ином языке приходится учитывать огромное количество особенностей. <strong>Java </strong>– универсальный современный способ создания контента кроссплатформенного типа. Его достаточно легко освоить, а вот с применением возникают некие трудности. Особенно если нужно создавать серверные приложения.</p>
<p>В данной статье познакомимся с технологией под названием <strong>JSP</strong>. Она активно применяется при написании определенного типа веб-страничек. Освоить оную рекомендуется из-за того, что с ее помощью удастся довольно быстро делать HTML-сайты.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A7%D1%82%D0%BE_%D1%8D%D1%82%D0%BE_%D1%82%D0%B0%D0%BA%D0%BE%D0%B5"></span>Что это такое<span class="ez-toc-section-end"></span></h2>
<p>JSP расшифровывается как Java Server Pages. Это технология, которая позволяет разработчикам веб-контента создавать содержимое с динамическими и статическими компонентами. Странички JSP включают в себя текст разного типа. Первый вариант – статическая исходная информация. Она может быть представлена в:</p>
<ul><li>HTML;</li><li>WML;</li><li>XML;</li><li>SVG.</li></ul>
<p>Второй тип текста – JSP элементы. Они отвечают за создание динамического содержимого. Также допускается применение полноценной библиотеки JSP тегов и EL. Все это помогает внедрить Java-код в статичное содержимое JSP-страничек.</p>
<p>JSP – это некая платформенно-независимая технология, используемая для написания HTML динамического характера. Теги здесь применяются для того, чтобы извлекать информацию из БД, обмениваться имеющимися сведениями и так далее. Для запуска часто применяются среды IDE NetBeans или Eclipse.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE_%D1%81%D0%BB%D0%BE%D0%B2_%D0%BE_%D1%81%D0%B5%D1%80%D0%B2%D0%BB%D0%B5%D1%82%D0%B0%D1%85"></span>Несколько слов о сервлетах<span class="ez-toc-section-end"></span></h2>
<p>Говоря о HTML и серверных утилитах, стоит обратить внимание на такую особенность, как сервлет. Это специальный программный модуль, который используется для обработки запросов клиентов. Отвечает за реализацию интерфейса сервлета. Находится на серверной стороне.</p>
<p>Работает по принципу запрос-ответ. Используются преимущественно для расширения веб-servers. Принцип работы несколько напоминает JSP.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A7%D0%B5%D0%BC_Java_Server_Page_%D0%BB%D1%83%D1%87%D1%88%D0%B5_Servlets"></span>Чем Java Server Page лучше Servlets<span class="ez-toc-section-end"></span></h2>
<p>Каждый программист при написании HTML странички должен решить, каким функционалом выбранного языка пользоваться. Первая рассматриваемая технология обладает рядом преимуществ перед сервлетами:</p>
<ol type="1"><li>Отвечает за возможность создания и управления HTML динамического типа. В данном случае процессы будут осуществляться более просто.</li><li>Для работы не требуется загрузка дополнительного программного обеспечения или документов. Пример – можно обойтись без файла класса java и web.xml.</li><li>Обработка ведется web-container для всех корректировок кода. Это приводит к тому, что JSP помогает избежать перекомпиляции.</li></ol>
<p>А еще доступ здесь осуществляется напрямую. Сервлеты требуют предварительного проведения сопоставления с web.xml.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E_%D0%B2%D0%B0%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B8"></span>О важности технологии<span class="ez-toc-section-end"></span></h3>
<p>Стоит обратить внимание на то, что JSP – это то, с чем должен ознакомиться каждый программер. Связано это с несколькими причинами. Для начала нужно рассмотреть возможности и сферы применения технологии. Она дает возможность:</p>
<ul><li>получения информации из HTML страницы в Java-коде;</li><li>отправлять электронные материалы из Java на HTML;</li><li>заниматься написанием Джава-кода непосредственно внутри HTML (но лучше не слишком часто пользоваться соответствующим приемом).</li></ul>
<p>Знать упомянутую технологию важно по нескольким причинам. А именно:</p>
<ul><li>это одна из ключевых особенностей веб-технологий в Джаве;</li><li>применяется в крупных компаниях и сложных проектах;</li><li>хорошо интегрируется с сервлетами Джавы внутри контейнера сервлетов.</li></ul>
<p>JSV – база для тех, кто планирует заниматься HTML и серверными утилитами. Облегчает и ускоряет работу любого программера.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A6%D0%B8%D0%BA%D0%BB_%D0%B6%D0%B8%D0%B7%D0%BD%D0%B8"></span>Цикл жизни<span class="ez-toc-section-end"></span></h3>
<p>Следующий момент, достойный внимания – это жизненный цикл JSP. Он полностью повторяет servlet, но имеет один дополнительный шаг. Во время него происходит компиляция рассматриваемой технологии в сервлет.</p>
<figure class="wp-block-image size-large"><img decoding="async" width="694" height="370" src="https://otus.ru/journal/wp-content/uploads/2022/02/1-5.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2848" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/1-5.jpg 694w, https://otus.ru/journal/wp-content/uploads/2022/02/1-5-300x160.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/1-5-150x80.jpg 150w" sizes="(max-width: 694px) 100vw, 694px" /></figure>
<p>На представленной схеме можно наглядно увидеть, как выглядит соответствующий жизненный цикл. Каждый этап обладает собственными нюансами.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4_%E2%80%93_%D1%81%D0%B0%D0%BC%D0%BE%D0%B5_%D0%BD%D0%B0%D1%87%D0%B0%D0%BB%D0%BE"></span>Перевод – самое начало<span class="ez-toc-section-end"></span></h4>
<p>Это – первый этап. Здесь происходит следующее:</p>
<ol type="1"><li>Контейнер переводит JSP документ в код Джавы. Он выступает сервлетом.</li><li>Перевод проводится в автоматическом режиме через веб-сервер.</li><li>Последний находит и проверяет достоверность, а затем производит запись сервлета для JPS page.</li></ol>
<p>Здесь никаких проблем с пониманием быть не должно.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_%E2%80%93_%D1%88%D0%B0%D0%B3_%D0%B4%D0%B2%D0%B0"></span>Компиляция – шаг два<span class="ez-toc-section-end"></span></h4>
<p>После описанных ранее действий контейнер JSP будет компилировать исходный Java-код. Это необходимо для того, чтобы создавать следующие servlets и сгенерированный классовый файл.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B6%D0%B0%D0%B5%D0%BC_%D0%B8_%D0%B8%D0%BD%D0%B8%D1%86%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D1%83%D0%B5%D0%BC_%E2%80%93_%D1%88%D0%B0%D0%B3_%D1%82%D1%80%D0%B8"></span>Загружаем и инициализируем – шаг три<span class="ez-toc-section-end"></span></h4>
<p>Третий этап предусматривает следующее:</p>
<ol type="1"><li>JSP Container загружает ранее созданный servlet.</li><li>Если процесс прошел правильно, будет создан экземпляр класса сервлета.</li><li>Важно учесть, что здесь используется конструктор, не имеющий никаких аргументов.</li><li>Контейнер JSP проводит инициализацию экземпляра объекта через вызов метода init. Он реализуется container посредством обращения к jspInit().</li></ol>
<figure class="wp-block-image size-large"><img decoding="async" width="240" height="55" src="https://otus.ru/journal/wp-content/uploads/2022/02/2-5.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2849" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/2-5.jpg 240w, https://otus.ru/journal/wp-content/uploads/2022/02/2-5-150x34.jpg 150w" sizes="(max-width: 240px) 100vw, 240px" /></figure>
<p>Элемент кода выше наглядно демонстрирует, каким образом осуществляется инициализация экземпляра.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_%E2%80%93_%D1%88%D0%B0%D0%B3_%D1%87%D0%B5%D1%82%D1%8B%D1%80%D0%B5"></span>Выполнение – шаг четыре<span class="ez-toc-section-end"></span></h4>
<p>Теперь, когда основные этапы позади, происходит не менее важный момент – выполнение. Здесь технология JSP вызовет метод _jspService(). У него два параметра:</p>
<ul><li>httpServletRequest;</li><li>HttpServletResponse.</li></ul>
<p>Вызывается рассматриваемый метод всего один раз для каждого отдельного запроса.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="632" height="59" src="https://otus.ru/journal/wp-content/uploads/2022/02/3-4.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2850" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/3-4.jpg 632w, https://otus.ru/journal/wp-content/uploads/2022/02/3-4-300x28.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/3-4-150x14.jpg 150w" sizes="(max-width: 632px) 100vw, 632px" /></figure>
<p>Упомянутый метод будет отвечать за генерацию ответов на посланный запрос.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B0%D0%B7%D1%80%D1%83%D1%88%D0%B5%D0%BD%D0%B8%D0%B5_%E2%80%93_%D0%BB%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B2%D0%B5%D1%80%D1%88%D0%B5%D0%BD%D0%B8%D0%B5"></span>Разрушение – логическое завершение<span class="ez-toc-section-end"></span></h4>
<p>На данном этапе целесообразно говорить о прекращении жизненного цикла.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="237" height="73" src="https://otus.ru/journal/wp-content/uploads/2022/02/4-4.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2851" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/4-4.jpg 237w, https://otus.ru/journal/wp-content/uploads/2022/02/4-4-150x46.jpg 150w" sizes="(max-width: 237px) 100vw, 237px" /></figure>
<p>При разрушении контейнер будет удалять JSP при помощи jspDestroy(). Как это происходит, указано на наглядном примере выше.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D0%B5%D1%80%D0%B2%D1%8B%D0%B9_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82_%E2%80%93_tutorial"></span>Первый проект – tutorial<span class="ez-toc-section-end"></span></h2>
<p>Для того, чтобы лучше разобраться в HTML и динамических страницах, созданных через рассматриваемую технологию, рекомендуется создать первый проект. Приведенный пример будет реализован через Eclipse.</p>
<p>Чтобы воспользоваться первым приложением JSP, необходимы следующие «компоненты»:</p>
<ul><li>Java;</li><li>JSP;</li><li>Apache Tomcat 8;</li><li>Eclipse IDE.</li></ul>
<p>Разобраться с соответствующей технологией HTML не составляет никакого труда, если действовать последовательно.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B0"></span>Создание проекта<span class="ez-toc-section-end"></span></h3>
<p>Для того, чтобы создавать страницы JSP и подобного рода приложения, можно действовать следующим образом:</p>
<ul type="1"><li>Создать новый проект динамического характера.</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="636" height="382" src="https://otus.ru/journal/wp-content/uploads/2022/02/5-3.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2852" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/5-3.jpg 636w, https://otus.ru/journal/wp-content/uploads/2022/02/5-3-300x180.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/5-3-150x90.jpg 150w" sizes="(max-width: 636px) 100vw, 636px" /></figure>
<ul type="1"><li>Добавить имя разработки. Пусть будет RankWebApplication.</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="460" height="387" src="https://otus.ru/journal/wp-content/uploads/2022/02/6-2.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2853" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/6-2.jpg 460w, https://otus.ru/journal/wp-content/uploads/2022/02/6-2-300x252.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/6-2-150x126.jpg 150w" sizes="(max-width: 460px) 100vw, 460px" /></figure>
<ul type="1"><li>Нажать на кнопку Next.</li><li>Далее предстоит осуществить настройку проекта. Шаг рекомендуется пропустить, так как в примере речь идет лишь о демонстрационной разработке.</li><li>Создавать web.xml не нужно. Этот факт требуется подтвердить в настройках веб-модуля.</li><li>Щелкнуть по кнопке с надписью «Готово».</li><li>Составить структуру каталогов имеющегося проекта.</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="503" height="232" src="https://otus.ru/journal/wp-content/uploads/2022/02/7-3.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2854" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/7-3.jpg 503w, https://otus.ru/journal/wp-content/uploads/2022/02/7-3-300x138.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/7-3-150x69.jpg 150w" sizes="(max-width: 503px) 100vw, 503px" /></figure>
<ul type="1"><li>Нажать ПКМ по каталогу «Веб Контент» и добавить новый файл JSP в разработку.</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="626" height="410" src="https://otus.ru/journal/wp-content/uploads/2022/02/8-3.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2855" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/8-3.jpg 626w, https://otus.ru/journal/wp-content/uploads/2022/02/8-3-300x196.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/8-3-150x98.jpg 150w" sizes="(max-width: 626px) 100vw, 626px" /></figure>
<ul type="1"><li>Назвать файл как NewRankFile.jsp.</li><li>Подтвердить операцию.</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="520" height="451" src="https://otus.ru/journal/wp-content/uploads/2022/02/9-3.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2856" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/9-3.jpg 520w, https://otus.ru/journal/wp-content/uploads/2022/02/9-3-300x260.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/9-3-150x130.jpg 150w" sizes="(max-width: 520px) 100vw, 520px" /></figure>
<ul type="1"><li>Установить шаблон JSP.</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="526" height="478" src="https://otus.ru/journal/wp-content/uploads/2022/02/10-3.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2857" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/10-3.jpg 526w, https://otus.ru/journal/wp-content/uploads/2022/02/10-3-300x273.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/10-3-150x136.jpg 150w" sizes="(max-width: 526px) 100vw, 526px" /></figure>
<ul type="1"><li>После того, как описанные действия останутся позади, произойдет создание нового файла. В «листинг 1» необходимо добавить html body, предложенное ниже. Он отвечает за выведение рейтинга команд по крикету.</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="625" height="460" src="https://otus.ru/journal/wp-content/uploads/2022/02/11-3.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2858" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/11-3.jpg 625w, https://otus.ru/journal/wp-content/uploads/2022/02/11-3-300x221.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/11-3-150x110.jpg 150w" sizes="(max-width: 625px) 100vw, 625px" /></figure>
<ul type="1"><li>Запустить проект, кликнув ПКМ по оному. Далее предстоит щелкнуть по надписи «Запуск от имени».</li><li>Выбрать «Запустить на сервере». После этого необходимо собственноручно определить новый сервер Tomcat. Это необходимо для первого проекта в Эклипсе. Требуется поставить отметку около «Всегда использовать данный server для этого проекта». При подобных обстоятельствах не придется осуществлять повторный выбор.</li><li>На экране появится рейтинги UCC и время обновления HTML. Оно будет сгенерировано через JSP выражение. Выходной ссылкой выступает http://localhost:8080/RankWebApplication/NewRankFile.jsp.</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="676" height="365" src="https://otus.ru/journal/wp-content/uploads/2022/02/12-2.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2859" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/12-2.jpg 676w, https://otus.ru/journal/wp-content/uploads/2022/02/12-2-300x162.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/12-2-150x81.jpg 150w" sizes="(max-width: 676px) 100vw, 676px" /></figure>
<p>По итогу на экране появится картинка, представленная выше. Это – первый ознакомительный проект, наглядно показывающий принцип работы JSP.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%94%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D1%8B"></span>Директивы<span class="ez-toc-section-end"></span></h2>
<p>Теги директивного типа – средства создания указаний направления и инструкций. Оные должны использоваться тогда, когда происходит перевод жизненного цикла JSP. Они оказывают воздействие полностью на структуру класса сервлета.</p>
<p>Обычно обладают весьма простым синтаксисом:</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="295" height="33" src="https://otus.ru/journal/wp-content/uploads/2022/02/13-2.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2860" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/13-2.jpg 295w, https://otus.ru/journal/wp-content/uploads/2022/02/13-2-150x17.jpg 150w" sizes="(max-width: 295px) 100vw, 295px" /></figure>
<p>При желании можно объединить установку нескольких имеющихся атрибутов для одной директивы:</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="334" height="96" src="https://otus.ru/journal/wp-content/uploads/2022/02/14-3.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2861" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/14-3.jpg 334w, https://otus.ru/journal/wp-content/uploads/2022/02/14-3-300x86.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/14-3-150x43.jpg 150w" sizes="(max-width: 334px) 100vw, 334px" /></figure>
<p>Директивы бывают нескольких типов:</p>
<ul><li>page;</li><li>include;</li><li>taglib.</li></ul>
<p>Каждый вариант предусматривает собственную область применения и особенности. Далее они будут рассмотрены в полной мере.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%94%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D1%8B_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D1%8B"></span>Директивы страницы<span class="ez-toc-section-end"></span></h3>
<p>Тег, который предусматривает инструкции и указания для переводчика в момент перевода жизненного цикла JSP для HTML. Включается в любом место. Разработчики имеют негласное правило – тег директивы страницы устанавливается в самом верху кодификации.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="269" height="22" src="https://otus.ru/journal/wp-content/uploads/2022/02/15-2.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2862" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/15-2.jpg 269w, https://otus.ru/journal/wp-content/uploads/2022/02/15-2-150x12.jpg 150w, https://otus.ru/journal/wp-content/uploads/2022/02/15-2-260x22.jpg 260w" sizes="(max-width: 269px) 100vw, 269px" /></figure>
<p>Синтаксис представлен на элементе кода выше. А ниже – аналог в XML.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="331" height="26" src="https://otus.ru/journal/wp-content/uploads/2022/02/16-2.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2864" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/16-2.jpg 331w, https://otus.ru/journal/wp-content/uploads/2022/02/16-2-300x24.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/16-2-150x12.jpg 150w" sizes="(max-width: 331px) 100vw, 331px" /></figure>
<p>В качестве примера можно описать атрибут в виде импорта. Он включается в самом верху странички. Запись имеет следующую форму:</p>
<p><code><%@ page import="java.util.Date" %>.</code></p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%90%D1%82%D1%80%D0%B8%D0%B1%D1%83%D1%82%D1%8B"></span>Атрибуты<span class="ez-toc-section-end"></span></h4>
<p>Перед тем, как работать с директивами странички JSP, необходимо выучить возможные атрибуты. Они представлены в таблице ниже.</p>
<figure class="wp-block-table"><table><tbody><tr><td>Имя</td><td>Характеристика</td></tr><tr><td>Language</td><td>Отвечает за определение языка, который применяется в криптлетах JSP файлов, выражениях или иных документах, включаемых к коду оттранслированного типа.</td></tr><tr><td>Page Import</td><td>Определение пакетов, которые были импортированы.</td></tr><tr><td>Extends</td><td>Установка суперкласса для сервлета, который будет сгенерирован. Использовать крайне осторожно.</td></tr><tr><td>Session</td><td>Если значение true – переменная session, которая была заранее определена, привязана к сессии при наличии таковой. В противном случае будет создаваться новая сессия. К ней осуществится непосредственная привязка. Если же значение false – сессии не используются. При обращении к переменной session возникает ошибка трансляции JSP страничек в сервлеты.</td></tr><tr><td>Buffer</td><td>Установка размера буфера для JSPWriterOut.</td></tr><tr><td>autoFlush</td><td>Отвечает за определение того, нужно ли будет проводить автоматическую очистку буфера при ошибках или переполненности.</td></tr><tr><td>isThreadSafe</td><td>При параметре true устанавливается нормальная работа сервлета. Множественные запросы будут обрабатываться одновременно через один экземпляр. False показывает, что сервлет должен наследовать однопоточную модель. Здесь все запросы будут обрабатываться отдельными экземплярами класса.</td></tr><tr><td>errorPage</td><td>Страница, которая будет выводиться при ошибках, приводящих к исключениям.</td></tr><tr><td>Info</td><td>Отвечает за определение строки информации о странице. Она доступа посредством метода getServletInfo().</td></tr><tr><td>isErrorPage</td><td>Может ли HTML применяется для обработки ошибок иных JSP страничек. Изначально – нет.</td></tr><tr><td>pageEncording</td><td>Определение кодировки символов JSP. Изначально установлен charset из contentType.</td></tr><tr><td>contentType</td><td>Определение кодировки для страницы JSP и ответа, а также MIME-тип ответа JSP.</td></tr></tbody></table></figure>
<p>Это лишь основы, которые должен знать каждый уважающий себя программер. Запоминать атрибуты и выучивать наизусть их вовсе не обязательно. Можно заглянуть в любой специализированный учебнику по изучаемой технологии. Там обязательно будут атрибуты тегов страницы.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%92%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B4%D0%B8%D1%80%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D1%8B"></span>Включение директивы<span class="ez-toc-section-end"></span></h3>
<p>Тег include тоже применяется во время перевода жизненного цикла JSP. Необходим для включения файла. Отвечает за объединение содержимого еще нескольких файлов. Директива включения входит в любое место на HTML (странице).</p>
<p><code><%@ include file="path/url" ></code></p>
<p>Выше приведен пример синтаксиса. Обладает всего одним атрибутом – file.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A2%D0%B5%D0%B3_Taglib"></span>Тег Taglib<span class="ez-toc-section-end"></span></h3>
<p>Этот вариант применяется для того, чтобы определить библиотеку пользовательских тегов. Дает возможность использования связанных тегов на одной страничке.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="368" height="18" src="https://otus.ru/journal/wp-content/uploads/2022/02/18-5.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2870" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/18-5.jpg 368w, https://otus.ru/journal/wp-content/uploads/2022/02/18-5-300x15.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/18-5-150x7.jpg 150w" sizes="(max-width: 368px) 100vw, 368px" /></figure>
<p>Выше пример синтаксиса. Если контейнер не смог обнаружить библиотеку тегов, возникает фатальная ошибка передачи (трансляции).</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D1%82%D0%B5%D0%B3%D0%B8"></span>Скриптовые теги<span class="ez-toc-section-end"></span></h2>
<p>Изучая tutorials по HTML и JSP, стоит обратить внимание на скриптовые теги. Они относятся к сценариям. Дают возможность добавления кода сценария в кодификацию Джавы для сгенерированной странички. Она создается переводчиком.</p>
<p>Бывает нескольких типов:</p>
<ul type="1"><li>Сценария. Отвечает за реализацию функциональности метода _jspService через написание кода Джавы. Применяется для создания соответствующей кодификации на JSP Page. Имеет вид:</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="148" height="28" src="https://otus.ru/journal/wp-content/uploads/2022/02/19-1.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2867"/></figure>
<ul type="1"><li>Декларативный. Применяется, чтобы объявлять переменные класса и реализацию методов класса jspInt и jspDestroy: </li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="142" height="56" src="https://otus.ru/journal/wp-content/uploads/2022/02/20-1.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2871"/></figure>
<ul type="1"><li>Выражение тега. Применяется для того, чтобы создавать Джава-выражения. Его нельзя заканчивать точкой с запятой, поставленные непосредственно в теге:</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="180" height="23" src="https://otus.ru/journal/wp-content/uploads/2022/02/21.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2872" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/21.jpg 180w, https://otus.ru/journal/wp-content/uploads/2022/02/21-150x19.jpg 150w" sizes="(max-width: 180px) 100vw, 180px" /></figure>
<p>Эти основы помогут на первых порах разобраться с директивами JSP.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%AF%D0%B7%D1%8B%D0%BA%D0%B8_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F"></span>Языки выражения<span class="ez-toc-section-end"></span></h2>
<p>Для того, чтобы получать доступ к информации приложения, которая хранится в JavaBeans, нужно использовать специальный язык. Он предусматривает разнообразные компоненты, которые даже у начинающего программера не вызовут никаких затруднений.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E%D0%BF%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80%D1%8B"></span>Операторы<span class="ez-toc-section-end"></span></h3>
<p>Операторы могут быть:</p>
<ul><li>арифметическими;</li><li>отношений;</li></ul>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="667" height="349" src="https://otus.ru/journal/wp-content/uploads/2022/02/22.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2873" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/22.jpg 667w, https://otus.ru/journal/wp-content/uploads/2022/02/22-300x157.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/22-150x78.jpg 150w" sizes="(max-width: 667px) 100vw, 667px" /></figure>
<ul><li>логическими.</li></ul>
<p>Тут ситуация точно такая же, как и в случае с обычной математикой. Чтобы разобраться в оных, достаточно взять учебник по информатике.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B5%D1%8F%D0%B2%D0%BD%D1%8B%D0%B5_%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D1%8B"></span>Неявные объекты<span class="ez-toc-section-end"></span></h3>
<p>Напрямую используются в EL выражении. Юзерам предоставляется возможность применения соответствующих элементов для того, чтобы извлекать атрибуты из тех или иных областей и значений параметров.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="548" height="503" src="https://otus.ru/journal/wp-content/uploads/2022/02/23.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2874" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/23.jpg 548w, https://otus.ru/journal/wp-content/uploads/2022/02/23-300x275.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/23-150x138.jpg 150w" sizes="(max-width: 548px) 100vw, 548px" /></figure>
<p>Выше представлены некоторые типы неявных объектов.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B"></span>Методы<span class="ez-toc-section-end"></span></h2>
<p>Не стоит забывать о методах. Огромную роль играют методы, которые доступны в классе Throwable.</p>
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="589" height="294" src="https://otus.ru/journal/wp-content/uploads/2022/02/24.jpg" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2875" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/24.jpg 589w, https://otus.ru/journal/wp-content/uploads/2022/02/24-300x150.jpg 300w, https://otus.ru/journal/wp-content/uploads/2022/02/24-150x75.jpg 150w" sizes="(max-width: 589px) 100vw, 589px" /></figure>
<p>Вот некоторые из них. Оные считаются самыми важными и используемыми на практике.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9E_%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B8_%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D0%B3%D0%BE_%D1%81%D0%BF%D0%B5%D0%BA%D1%82%D1%80%D0%B0_%D0%B7%D0%BD%D0%B0%D0%BD%D0%B8%D0%B9_%E2%80%93_%D1%87%D1%82%D0%BE_%D0%BB%D1%83%D1%87%D1%88%D0%B5_%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C"></span>О получении полного спектра знаний – что лучше выбрать<span class="ez-toc-section-end"></span></h2>
<p>Основы программирования поможет освоить любой учебник, посвященный данной тематике. Но пользователи, которые решили полноценно работать с JSP и HTML, должны изучить направление более развернуто. В данном случае предстоит выбрать грамотный подход:</p>
<ol type="1"><li>Обучение в ВУЗе. Ученик узнает, что такое input type и изучит основы программирования на Джаве. Долгий подход, зато по выпуску человеку будет выдан диплом.</li><li>Самообразование. Никаких подтверждений наличия знаний не будет. Вариант хорош для тех, кто хочет быть самоучкой и не претендует на звание опытного разработчика в крупной компании.</li><li>Обучение в техникуме. В России найти среднее профессиональное образование по направлению Java проблематично. Но такой вариант сгодится, если хочется продолжить после обучение в ВУЗе.</li></ol>
<p>Лучший выход out of situation – это прохождение узкоспециализированных курсов с выдачей сертификатов. Можно учиться в любом месте и в любое время. Срок обучения – до года. Есть предложения и для новичков, и для опытных разработчиков.</p>
<figure class="wp-block-image size-large"><a href="https://otus.ru/lessons/java-specialization/?utm_source=oj&utm_medium=affilate&utm_campaign=java_bandle" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><img loading="lazy" decoding="async" width="970" height="90" src="https://otus.ru/journal/wp-content/uploads/2022/02/JavaSpec_Welcome_970x90.png" alt="Технологии JSP: описание, особенности, использование" class="wp-image-2846" srcset="https://otus.ru/journal/wp-content/uploads/2022/02/JavaSpec_Welcome_970x90.png 970w, https://otus.ru/journal/wp-content/uploads/2022/02/JavaSpec_Welcome_970x90-300x28.png 300w, https://otus.ru/journal/wp-content/uploads/2022/02/JavaSpec_Welcome_970x90-150x14.png 150w, https://otus.ru/journal/wp-content/uploads/2022/02/JavaSpec_Welcome_970x90-768x71.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></a></figure>
<p></p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/java/" rel="tag" data-wpel-link="internal">Java</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Ftehnologii-jsp-opisanie-osobennosti-ispolzovanie%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Ftehnologii-jsp-opisanie-osobennosti-ispolzovanie%2F&text=%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B8%20JSP%3A%20%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5%2C%20%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8%2C%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Ftehnologii-jsp-opisanie-osobennosti-ispolzovanie%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Ftehnologii-jsp-opisanie-osobennosti-ispolzovanie%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2022%2F02%2Foj-1080x720-6.png&description=%D0%A2%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B8%20JSP%3A%20%D0%BE%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5%2C%20%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8%2C%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/javascript-i-sobytiya/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/javascript-i-sobytiya/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="JavaScript и события" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-5-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-5-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-5-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-5-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-5-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-5-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-5-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-5.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-5-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="JavaScript и события" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/javascript-i-sobytiya/" data-wpel-link="internal">JavaScript и события</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/javascript-i-sobytiya/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2022-02-03T18:56:54+00:00">3 февраля, 2022</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">9 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/vse-chto-nuzhno-znat-o-json-osobennosti-opisanie-pervye-proekt/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/vse-chto-nuzhno-znat-o-json-osobennosti-opisanie-pervye-proekt/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Все, что нужно знать о JSON: особенности, описание, первые проект" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-7-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-7-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-7-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-7-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-7-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-7.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2022/02/oj-1080x720-7-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Все, что нужно знать о JSON: особенности, описание, первые проект" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/vse-chto-nuzhno-znat-o-json-osobennosti-opisanie-pervye-proekt/" data-wpel-link="internal">Все, что нужно знать о JSON: особенности, описание, первые проект</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/vse-chto-nuzhno-znat-o-json-osobennosti-opisanie-pervye-proekt/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2022-02-04T17:42:34+00:00">4 февраля, 2022</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">8 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/tehnologii-jsp-opisanie-osobennosti-ispolzovanie\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 15:05:34 GMT -->