Опишите, как обрабатываются JSP страницы, начиная от запроса к серверу, заканчивая ответом пользователю.
Когда пользователь переходит по ссылке на страницу page.jsp, он отправляет http-запрос на сервер GET /page.jsp. Затем, на основе этого запроса и текста самой страницы, сервер генерирует java-класс, компилирует его и выполняет полученный сервлет, формирующий ответ пользователю в виде представления этой страницы, который сервер и перенаправляет обратно пользователю.
Когда пользователь переходит по ссылке на страницу page.jsp, он отправляет http-запрос на сервер GET /page.jsp. Затем, на основе этого запроса и текста самой страницы, сервер генерирует java-класс, компилирует его и выполняет полученный сервлет, формирующий ответ пользователю в виде представления этой страницы, который сервер и перенаправляет обратно пользователю.
Расскажите об этапах (фазах) жизненного цикла JSP.
Если посмотреть код внутри созданной JSP страницы, то он будет выглядеть как HTML и не будет похож на java класс. Конвертацией JSP страниц в HTML код занимается контейнер, который так же создает и сервлет для использования в веб приложении.
Жизненный цикл JSP состоит из нескольких фаз, которыми руководит JSP контейнер:
Translation – проверка и парсинг кода JSP страницы для создания кода сервлета.
Compilation – компиляция исходного кода сервлета.
Class Loading – загрузка скомпилированного класса в память.
Instantiation – внедрение конструктора без параметра загруженного класса для инициализации в памяти.
Initialization – вызов init() метода объекта JSP класса и инициализация конфигурации сервлета с первоначальными параметрами, которые указаны в дескрипторе развертывания (web.xml). После этой фазы JSP способен обрабатывать запросы клиентов. Обычно эти фазы происходят после первого запроса клиента (т.е. ленивая загрузка), но можно настроить загрузку и инициализацию JSP на старте приложения по аналогии с сервлетами.
Request Processing – длительный жизненный цикл обработки запросов клиента JSP страницей. Обработка является многопоточной и аналогична сервлетам — для каждого запроса создается новый поток, объекты ServletRequest и ServletResponse, происходит выполнение сервис методов.
Destroy – последняя фаза жизненного цикла JSP, на которой её класс удаляется из памяти. Обычно это происходит при выключении сервера или выгрузке приложения.
Если посмотреть код внутри созданной JSP страницы, то он будет выглядеть как HTML и не будет похож на java класс. Конвертацией JSP страниц в HTML код занимается контейнер, который так же создает и сервлет для использования в веб приложении.
Жизненный цикл JSP состоит из нескольких фаз, которыми руководит JSP контейнер:
Translation – проверка и парсинг кода JSP страницы для создания кода сервлета.
Compilation – компиляция исходного кода сервлета.
Class Loading – загрузка скомпилированного класса в память.
Instantiation – внедрение конструктора без параметра загруженного класса для инициализации в памяти.
Initialization – вызов init() метода объекта JSP класса и инициализация конфигурации сервлета с первоначальными параметрами, которые указаны в дескрипторе развертывания (web.xml). После этой фазы JSP способен обрабатывать запросы клиентов. Обычно эти фазы происходят после первого запроса клиента (т.е. ленивая загрузка), но можно настроить загрузку и инициализацию JSP на старте приложения по аналогии с сервлетами.
Request Processing – длительный жизненный цикл обработки запросов клиента JSP страницей. Обработка является многопоточной и аналогична сервлетам — для каждого запроса создается новый поток, объекты ServletRequest и ServletResponse, происходит выполнение сервис методов.
Destroy – последняя фаза жизненного цикла JSP, на которой её класс удаляется из памяти. Обычно это происходит при выключении сервера или выгрузке приложения.
👍1😁1
Расскажите о методах жизненного цикла JSP.
Контейнер сервлетов (например, Tomcat, GlassFish) создает из JSP-страницы класс сервлета, наследующего свойства интерфейса javax.servlet.jsp.HttpJspBase и включающего следующие методы:
jspInit() — метод объявлен в JSP странице и реализуется с помощью контейнера. Этот метод вызывается один раз в жизненном цикле JSP для того, чтобы инициализировать конфигурационные параметры указанные в дескрипторе развертывания. Этот метод можно переопределить с помощью определения элемента JSP scripting и указания необходимых параметров для инициализации;
_jspService() — метод переопределяется контейнером автоматически и соответствует непосредственно коду JSP, описанному на странице. Этот метод определен в интерфейсе HttpJspPage, его имя начинается с нижнего подчеркивания и он отличается от других методов жизненного цикла тем, что его невозможно переопределить;
jspDestroy() — метод вызывается контейнером для удаления объекта из памяти (на последней фазе жизненного цикла JSP - Destroy). Метод вызывается только один раз и доступен для переопределения, предоставляя возможность освободить ресурсы, которые были созданы в jspInit().
Контейнер сервлетов (например, Tomcat, GlassFish) создает из JSP-страницы класс сервлета, наследующего свойства интерфейса javax.servlet.jsp.HttpJspBase и включающего следующие методы:
jspInit() — метод объявлен в JSP странице и реализуется с помощью контейнера. Этот метод вызывается один раз в жизненном цикле JSP для того, чтобы инициализировать конфигурационные параметры указанные в дескрипторе развертывания. Этот метод можно переопределить с помощью определения элемента JSP scripting и указания необходимых параметров для инициализации;
_jspService() — метод переопределяется контейнером автоматически и соответствует непосредственно коду JSP, описанному на странице. Этот метод определен в интерфейсе HttpJspPage, его имя начинается с нижнего подчеркивания и он отличается от других методов жизненного цикла тем, что его невозможно переопределить;
jspDestroy() — метод вызывается контейнером для удаления объекта из памяти (на последней фазе жизненного цикла JSP - Destroy). Метод вызывается только один раз и доступен для переопределения, предоставляя возможность освободить ресурсы, которые были созданы в jspInit().
Как скомпилировать исходники java вручную
В современной разработке многие рутинные процессы автоматизированы достаточно хорошо, поэтому вам не приходится каждый раз компилировать ваши исходники вручную. Я не сомневаюсь, что вы прекрасно знаете, как это делается. А для тех, кто забыл или решил освежить свои знания, рассмотрим небольшой пример.
https://te.legra.ph/Kak-skompilirovat-ishodniki-java-vruchnuyu-01-04
В современной разработке многие рутинные процессы автоматизированы достаточно хорошо, поэтому вам не приходится каждый раз компилировать ваши исходники вручную. Я не сомневаюсь, что вы прекрасно знаете, как это делается. А для тех, кто забыл или решил освежить свои знания, рассмотрим небольшой пример.
https://te.legra.ph/Kak-skompilirovat-ishodniki-java-vruchnuyu-01-04
Telegraph
Как скомпилировать исходники java вручную
В современной разработке многие рутинные процессы автоматизированы достаточно хорошо, поэтому вам не приходится каждый раз компилировать ваши исходники вручную. Я не сомневаюсь, что вы прекрасно знаете, как это делается. А для тех, кто забыл или решил освежить…
Какие методы жизненного цикла JSP могут быть переопределены?
Возможно переопределить лишь jspInit() и jspDestroy() методы.
Возможно переопределить лишь jspInit() и jspDestroy() методы.
Как можно предотвратить прямой доступ к JSP странице из браузера?
Прямой доступ к директории /WEB-INF/ из веб-приложения отсутствует. Поэтому JSP-страницы можно расположить внутри этой папки и тем самым запретить доступ к странице из браузера. Однако, по аналогии с описанием сервлетов, будет необходимо настроить дескриптор развертывания:
<servlet>
<servlet-name>Example</servlet-name>
<jsp-file>/WEB-INF/example.jsp</jsp-file>
<init-param>
<param-name>exampleParameter</param-name>
<param-value>parameterValue</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Example</servlet-name>
<url-pattern>/example.jsp</url-pattern>
</servlet-mapping>
Прямой доступ к директории /WEB-INF/ из веб-приложения отсутствует. Поэтому JSP-страницы можно расположить внутри этой папки и тем самым запретить доступ к странице из браузера. Однако, по аналогии с описанием сервлетов, будет необходимо настроить дескриптор развертывания:
<servlet>
<servlet-name>Example</servlet-name>
<jsp-file>/WEB-INF/example.jsp</jsp-file>
<init-param>
<param-name>exampleParameter</param-name>
<param-value>parameterValue</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Example</servlet-name>
<url-pattern>/example.jsp</url-pattern>
</servlet-mapping>
👍1
А как вы определяете свойства переменными окружения в Spring Boot приложениях?
https://habr.com/ru/post/588985/
https://habr.com/ru/post/588985/
👍2
Какая разница между динамическим и статическим содержимым JSP?
Статическое содержимое JSP (HTML, код JavaScript, изображения и т.д.) не изменяется в процессе работы веб приложения.
Динамические ресурсы созданы для того, чтобы отображать свое содержимое в зависимости от пользовательских действий. Обычно они представлены в виде выражений EL (Expression Language), библиотек JSP-тегов и пр.
Статическое содержимое JSP (HTML, код JavaScript, изображения и т.д.) не изменяется в процессе работы веб приложения.
Динамические ресурсы созданы для того, чтобы отображать свое содержимое в зависимости от пользовательских действий. Обычно они представлены в виде выражений EL (Expression Language), библиотек JSP-тегов и пр.
👍2
Как закомментировать код в JSP?
<!—- HTML комментарий; отображается на странице JSP —-> такие комментарии будут видны клиенту при просмотре кода страницы.
<%—- JSP комментарий; не отображается на странице JSP —-%> такие комментарии описываются в созданном сервлете и не посылаются клиенту. Для любых комментариев по коду или отладочной информации необходимо использовать именно такой тип комментариев.
<!—- HTML комментарий; отображается на странице JSP —-> такие комментарии будут видны клиенту при просмотре кода страницы.
<%—- JSP комментарий; не отображается на странице JSP —-%> такие комментарии описываются в созданном сервлете и не посылаются клиенту. Для любых комментариев по коду или отладочной информации необходимо использовать именно такой тип комментариев.
👍3
Какие существуют основные типы тегов JSP?
Выражение JSP: <%= expression %> - выражение, которое будет обработано с перенаправлением результата на вывод;
Скриплет JSP: <% code %> - код, добавляемый в метод service().
Объявление JSP: <%! code %> - код, добавляемый в тело класса сервлета вне метода service().
Директива JSP page: <%@ page att="value" %> - директивы для контейнера сервлетов с информацией о параметрах.
Директива JSP include: <%@ include file="url" %> - файл в локальной системе, подключаемый при трансляции JSP в сервлет.
Комментарий JSP: <%-- comment --%> - комментарий; игнорируется при трансляции JSP страницы в сервлет.
Выражение JSP: <%= expression %> - выражение, которое будет обработано с перенаправлением результата на вывод;
Скриплет JSP: <% code %> - код, добавляемый в метод service().
Объявление JSP: <%! code %> - код, добавляемый в тело класса сервлета вне метода service().
Директива JSP page: <%@ page att="value" %> - директивы для контейнера сервлетов с информацией о параметрах.
Директива JSP include: <%@ include file="url" %> - файл в локальной системе, подключаемый при трансляции JSP в сервлет.
Комментарий JSP: <%-- comment --%> - комментарий; игнорируется при трансляции JSP страницы в сервлет.
👍2👎2
Подборка каналов для программистов 🎯
Системное администрирование 📌
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
Программирование, фронтенд, мобильная р-ка, книги 📌
https://t.me/game_devv GameDev: разработка игр
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/developer_mobila Мобильная разработка
https://t.me/BookPython Библиотека Python разработчика
https://t.me/programmist_of Книги по программированию
https://t.me/BookJava Библиотека Java разработчика
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
Шутки программистов 📌
https://t.me/itumor ITumor | программисты шутят
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Учим английский 📌
https://t.me/UchuEnglish Английский с нуля
Книги по математике 📌
https://t.me/Pomatematike Канал по математике
Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика
Крипта 📌
https://t.me/bitkoinoff Новости криптовалют 📈
Вакансии для программистов 📌
https://t.me/progjob Вакансии для программистов
Системное администрирование 📌
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
Программирование, фронтенд, мобильная р-ка, книги 📌
https://t.me/game_devv GameDev: разработка игр
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/developer_mobila Мобильная разработка
https://t.me/BookPython Библиотека Python разработчика
https://t.me/programmist_of Книги по программированию
https://t.me/BookJava Библиотека Java разработчика
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
Шутки программистов 📌
https://t.me/itumor ITumor | программисты шутят
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Учим английский 📌
https://t.me/UchuEnglish Английский с нуля
Книги по математике 📌
https://t.me/Pomatematike Канал по математике
Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика
Крипта 📌
https://t.me/bitkoinoff Новости криптовалют 📈
Вакансии для программистов 📌
https://t.me/progjob Вакансии для программистов
👍4
Что вы знаете о действиях JSP (Action tag и JSP Action Elements).
Action tag и JSP Action Elements предоставляют методы работы с Java Beans, подключения ресурсов, проброса запросов и создания динамических XML элементов. Такие элементы всегда начинаются с записи jsp: и используются непосредственно внутри страницы JSP без необходимости подключения сторонних библиотек или дополнительных настроек.
Наиболее часто используемыми JSP Action Elements являются:
jsp:include: <jsp:include page="относительный URL" flush="true"/> - подключить файл при запросе страницы. Если необходимо, чтобы файл подключался в процессе трансляции страницы, то используется директива page совместно с атрибутом include;
jsp:useBean: <jsp:useBean att=значение*/> или <jsp:useBean att=значение*>...</jsp:useBean> - найти или создать Java bean;
jsp:setProperty: <jsp:setProperty att=значение*/> - установить свойства Java bean, или явно, или указанием на соответствующее значение, передаваемое при запросе;
jsp:forward: <jsp:forward page="относительный URL"/> - передать запрос другой странице;
jsp:plugin: <jsp:plugin attribute="значение"*>...</jsp:plugin> - сгенерировать (в зависимости от типа браузера) тэги OBJECT или EMBED для апплета, использующего технологию Java Plugin.
Action tag и JSP Action Elements предоставляют методы работы с Java Beans, подключения ресурсов, проброса запросов и создания динамических XML элементов. Такие элементы всегда начинаются с записи jsp: и используются непосредственно внутри страницы JSP без необходимости подключения сторонних библиотек или дополнительных настроек.
Наиболее часто используемыми JSP Action Elements являются:
jsp:include: <jsp:include page="относительный URL" flush="true"/> - подключить файл при запросе страницы. Если необходимо, чтобы файл подключался в процессе трансляции страницы, то используется директива page совместно с атрибутом include;
jsp:useBean: <jsp:useBean att=значение*/> или <jsp:useBean att=значение*>...</jsp:useBean> - найти или создать Java bean;
jsp:setProperty: <jsp:setProperty att=значение*/> - установить свойства Java bean, или явно, или указанием на соответствующее значение, передаваемое при запросе;
jsp:forward: <jsp:forward page="относительный URL"/> - передать запрос другой странице;
jsp:plugin: <jsp:plugin attribute="значение"*>...</jsp:plugin> - сгенерировать (в зависимости от типа браузера) тэги OBJECT или EMBED для апплета, использующего технологию Java Plugin.
Взаимодействие JSP - сервлет - JSP.
«JSP - сервлет - JSP» архитектура построения приложений носит название MVC (Model/View/Controller):
Model - классы данных и бизнес-логики;
View - страницы JSP;
Controller - сервлеты.
«JSP - сервлет - JSP» архитектура построения приложений носит название MVC (Model/View/Controller):
Model - классы данных и бизнес-логики;
View - страницы JSP;
Controller - сервлеты.
Какие области видимости переменных существуют в JSP?
Область видимости объектов определяется тем контекстом, в который помещается данный объект. В зависимости от той или иной области действия так же определяется время существования объекта.
В JSP предусмотрены следующие области действия переменных (объектов):
request область действия запроса - объект будет доступен на текущей JSP странице, странице пересылки (при использовании jsp:forward) или на включаемой странице (при использовании jsp:include);
session область действия сессии - объект будет помещен в сеанс пользователя, будет доступен на всех JSP страницах и будет существовать пока существует сессия пользователя, или он не будет из нее принудительно удален.
application область действия приложения - объект будет доступен для всех пользователей на всех JSP страницах и будет существовать на протяжении всей работы приложения или пока не будет удален принудительно и контекста приложения.
page область действия страницы - объект будет доступен только на той странице, где он определен. На включаемых (jsp:include) и переадресуемых (jsp:forward) страницах данный объект уже не будет доступен.
Таким образом, чтобы объект был доступен всем JSP страницам, необходимо указать область видимости application или session, в зависимости от того требуется ли доступ к объекту всем пользователям или только текущему.
Для указания требуемой области действия при определении объекта на JSP странице используется атрибут scope тега jsp:useBean:
<jsp:useBean id="myBean" class="ru.javacore.MyBean" scope="session"/>
Если не указывать атрибут scope, то по умолчанию задается область видимости страницы page
Область видимости объектов определяется тем контекстом, в который помещается данный объект. В зависимости от той или иной области действия так же определяется время существования объекта.
В JSP предусмотрены следующие области действия переменных (объектов):
request область действия запроса - объект будет доступен на текущей JSP странице, странице пересылки (при использовании jsp:forward) или на включаемой странице (при использовании jsp:include);
session область действия сессии - объект будет помещен в сеанс пользователя, будет доступен на всех JSP страницах и будет существовать пока существует сессия пользователя, или он не будет из нее принудительно удален.
application область действия приложения - объект будет доступен для всех пользователей на всех JSP страницах и будет существовать на протяжении всей работы приложения или пока не будет удален принудительно и контекста приложения.
page область действия страницы - объект будет доступен только на той странице, где он определен. На включаемых (jsp:include) и переадресуемых (jsp:forward) страницах данный объект уже не будет доступен.
Таким образом, чтобы объект был доступен всем JSP страницам, необходимо указать область видимости application или session, в зависимости от того требуется ли доступ к объекту всем пользователям или только текущему.
Для указания требуемой области действия при определении объекта на JSP странице используется атрибут scope тега jsp:useBean:
<jsp:useBean id="myBean" class="ru.javacore.MyBean" scope="session"/>
Если не указывать атрибут scope, то по умолчанию задается область видимости страницы page
Пишете на Java или Python и хотите работать в Яндексе?
Тогда приглашаем 22 января на Fast Track для бэкенд-разработчиков. На мероприятии вы можете за один день пройти собеседование и получить оффер в команду HR Tech Яндекса.
HR Tech занимается интранетом Яндекса. Например, это сервисы для процесса найма в Яндекс, учебная платформа Яндекс.Контест и другие сервисы для организации работы сотрудников. Подробнее о команде здесь.
Регистрируйтесь, решайте отборочный тест и до встречи 22 января! Регистрация
Тогда приглашаем 22 января на Fast Track для бэкенд-разработчиков. На мероприятии вы можете за один день пройти собеседование и получить оффер в команду HR Tech Яндекса.
HR Tech занимается интранетом Яндекса. Например, это сервисы для процесса найма в Яндекс, учебная платформа Яндекс.Контест и другие сервисы для организации работы сотрудников. Подробнее о команде здесь.
Регистрируйтесь, решайте отборочный тест и до встречи 22 января! Регистрация
Вакансии: Эйчартех
Работа в Яндексе. Яндекс очень разный, поэтому каждый может найти своё.
👍1
Разбираемся, почему в Java утекает память несмотря на сборщик мусора
https://www.baeldung.com/java-memory-leaks
https://www.baeldung.com/java-memory-leaks
👍2
Какие неявные, внутренние объекты и методы есть на JSP странице?
JSP implicit objects (неявные объекты) создаются контейнером при конвертации JSP страницы в код сервлета для помощи разработчикам. Эти объекты можно использовать напрямую в скриптлетах для передачи информации в сервис методы, однако мы не можем использовать неявные объекты в JSP Declaration, т.к. такой код пойдет на уровень класса.
Существует 9 видов неявных объектов, которые можно использовать прямо на JSP странице. Семь из них объявлены как локальные переменные в начале _jspService() метода, а два оставшихся могут быть использованы как аргументы метода _jspService().
out Object :
<strong>Current Time is</strong>: <% out.print(new Date()); %><br>
request Object :
<strong>Request User-Agent</strong>: <%=request.getHeader("User-Agent") %><br>
response Object :
<strong>Response</strong>: <%response.addCookie(new Cookie("Test","Value")); %>
config Object :
<strong>User init param value</strong>: <%=config.getInitParameter("User") %><br>
application Object :
<strong>User context param value</strong>: <%=application.getInitParameter("User") %><br>
session Object :
<strong>User Session ID</strong>: <%=session.getId() %><br>
pageContext Object :
<% pageContext.setAttribute("Test", "Test Value"); %>
<strong>PageContext attribute</strong>: {Name="Test",Value="<%=pageContext.getAttribute("Test") %>"}<br>
page Object :
<strong>Generated Servlet Name</strong>: <%=page.getClass().getName() %>
exception Object :
<strong>Exception occured</strong>: <%=exception %><br>
JSP implicit objects (неявные объекты) создаются контейнером при конвертации JSP страницы в код сервлета для помощи разработчикам. Эти объекты можно использовать напрямую в скриптлетах для передачи информации в сервис методы, однако мы не можем использовать неявные объекты в JSP Declaration, т.к. такой код пойдет на уровень класса.
Существует 9 видов неявных объектов, которые можно использовать прямо на JSP странице. Семь из них объявлены как локальные переменные в начале _jspService() метода, а два оставшихся могут быть использованы как аргументы метода _jspService().
out Object :
<strong>Current Time is</strong>: <% out.print(new Date()); %><br>
request Object :
<strong>Request User-Agent</strong>: <%=request.getHeader("User-Agent") %><br>
response Object :
<strong>Response</strong>: <%response.addCookie(new Cookie("Test","Value")); %>
config Object :
<strong>User init param value</strong>: <%=config.getInitParameter("User") %><br>
application Object :
<strong>User context param value</strong>: <%=application.getInitParameter("User") %><br>
session Object :
<strong>User Session ID</strong>: <%=session.getId() %><br>
pageContext Object :
<% pageContext.setAttribute("Test", "Test Value"); %>
<strong>PageContext attribute</strong>: {Name="Test",Value="<%=pageContext.getAttribute("Test") %>"}<br>
page Object :
<strong>Generated Servlet Name</strong>: <%=page.getClass().getName() %>
exception Object :
<strong>Exception occured</strong>: <%=exception %><br>
👎3👍1
Какие неявные объекты не доступны в обычной JSP странице?
Неявный объект исключений JSP недоступен в обычных JSP страницах и используется на страницах ошибок JSP (errorpage) только для того, чтобы перехватить исключение, выброшенное JSP страницей и далее предоставить какую-либо полезную информацию клиенту.
Неявный объект исключений JSP недоступен в обычных JSP страницах и используется на страницах ошибок JSP (errorpage) только для того, чтобы перехватить исключение, выброшенное JSP страницей и далее предоставить какую-либо полезную информацию клиенту.
👎4
Java. Professional Guide
Автор: David Mayer (2020)
Узнайте секреты Java, сдайте экзамен и получите самую важную сертификацию в мире. Реальный практический тест с подробными скриншотами, ответами и пояснениями.
Эта книга предназначена для того, чтобы помочь вам освоить наиболее востребованные и критически важные компоненты для получения сертификата Java. Сертификация Java является относительно важным фактором, открывающим новые возможности в вашей профессиональной карьере. Все начинается с доверия. Как только потенциальный работодатель увидит ваше резюме, сертификация Java, без сомнения, привлечет его внимание.
Скачать книгу
#java #english
Автор: David Mayer (2020)
Узнайте секреты Java, сдайте экзамен и получите самую важную сертификацию в мире. Реальный практический тест с подробными скриншотами, ответами и пояснениями.
Эта книга предназначена для того, чтобы помочь вам освоить наиболее востребованные и критически важные компоненты для получения сертификата Java. Сертификация Java является относительно важным фактором, открывающим новые возможности в вашей профессиональной карьере. Все начинается с доверия. Как только потенциальный работодатель увидит ваше резюме, сертификация Java, без сомнения, привлечет его внимание.
Скачать книгу
#java #english
Что вы знаете о PageContext и какие преимущества его использования?
Неявный объект JSP - экземпляр класса javax.servlet.jsp.PageContext предоставляет доступ ко всем пространствам имён, ассоциированным с JSP-страницей, а также к различным её атрибутам. Остальные неявные объекты добавляются к pageContext автоматически.
Класс PageContext это абстрактный класс, а его экземпляр можно получить через вызов метода JspFactory.getPageContext(), и освободить через вызов метода JspFactory.releasePageContext().
PageContext обладает следующим набором особенностей и возможностей:
единый API для обслуживания пространств имён различных областей видимости;
несколько удобных API для доступа к различным public-объектам;
механизм получения JspWriter для вывода;
механизм обслуживания использования сессии страницей;
механизм экспонирования («показа») атрибутов директивы page среде скриптинга;
механизмы направления или включения текущего запроса в другие компоненты приложения;
механизм обработки процессов исключений на страницах ошибок errorpage;
Неявный объект JSP - экземпляр класса javax.servlet.jsp.PageContext предоставляет доступ ко всем пространствам имён, ассоциированным с JSP-страницей, а также к различным её атрибутам. Остальные неявные объекты добавляются к pageContext автоматически.
Класс PageContext это абстрактный класс, а его экземпляр можно получить через вызов метода JspFactory.getPageContext(), и освободить через вызов метода JspFactory.releasePageContext().
PageContext обладает следующим набором особенностей и возможностей:
единый API для обслуживания пространств имён различных областей видимости;
несколько удобных API для доступа к различным public-объектам;
механизм получения JspWriter для вывода;
механизм обслуживания использования сессии страницей;
механизм экспонирования («показа») атрибутов директивы page среде скриптинга;
механизмы направления или включения текущего запроса в другие компоненты приложения;
механизм обработки процессов исключений на страницах ошибок errorpage;
👎6👍2
Мега подборка каналов для программистов 🎯
https://t.me/progjob Вакансии для программистов
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (Админский юмор, фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/linux_sup Новости и информация из мира Linux
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/dev_ops_info Devops
Программирование, фронтенд, Биг дата, мобильная р-ка, книги 📌
https://t.me/game_devv GameDev: разработка игр
https://t.me/Angular_Vuejs Angular Vue js React
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/Frontend_now Все для фронтендеров
https://t.me/react_prog Все что связано с reactjs
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/developer_mobila Мобильная разработка
https://t.me/Welcome_Python Добро пожаловать в мир Python
https://t.me/BookPython Библиотека Python разработчика
https://t.me/programmist_of Книги по программированию
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_sup Программирование на Java
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/imobile_dev Все по мобильной разработке: iOS, Android
https://t.me/database_group Все про базы данных
https://t.me/cloud_comp Облачные сервисы, вычисления и безопасность
https://t.me/bigdata_world Data Science, Big Data, Machine Learning
IT новости 📌
https://t.me/htech_news Новости HighTech
https://t.me/all_itnews IT новости на английском
https://t.me/gmorning_news Последнии новости из мира науки
https://t.me/youtips_tricks Технологические советы и хитрости
Шутки программистов 📌
https://t.me/dev_jokes Daily Dev Jokes
https://t.me/itumor ITumor | программисты шутят
SMM, Seo, Wordpress 📌
https://t.me/allsocial_news SMM / Советы, Новости, Лайфхаки
https://t.me/seo_go Новости по SEO продвижению сайтов
https://t.me/news_wordpress Канал о самой популярной CMS
Защита, взлом, безопасность 📌
https://t.me/crypto_security_lab Материалы по информационной безопасности
https://t.me/thehaking Канал о кибербезопасности
https://t.me/Hackme_news Новости из мира хакинга
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
https://t.me/goodw_design Статьи по Веб дизайну
Должен знать 📌
https://t.me/UchuEnglish Английский с нуля
https://t.me/Pomatematike Канал по математике
Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика
Крипта 📌
https://t.me/crypto_moneygo Канал о крипте, новости, инсайды
https://t.me/bitkoinoff Нгвости криптовалют
VR, робототехника 📌
https://t.me/AR_VR_vision Компьютерное зрение, виртуальная реальность
https://t.me/robotics_scince Канал о Робототехнике и автоматизации
https://t.me/network_arch Network architecture and Administration
https://t.me/easy_program Программирование для новичков
https://t.me/testin_new Тестирование
https://t.me/IoTprog Интернет вещей
https://t.me/generalprog General programming
https://t.me/Hware_news Цифровые тенденции
https://t.me/progjob Вакансии для программистов
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (Админский юмор, фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/linux_sup Новости и информация из мира Linux
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/dev_ops_info Devops
Программирование, фронтенд, Биг дата, мобильная р-ка, книги 📌
https://t.me/game_devv GameDev: разработка игр
https://t.me/Angular_Vuejs Angular Vue js React
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/Frontend_now Все для фронтендеров
https://t.me/react_prog Все что связано с reactjs
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/developer_mobila Мобильная разработка
https://t.me/Welcome_Python Добро пожаловать в мир Python
https://t.me/BookPython Библиотека Python разработчика
https://t.me/programmist_of Книги по программированию
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_sup Программирование на Java
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/imobile_dev Все по мобильной разработке: iOS, Android
https://t.me/database_group Все про базы данных
https://t.me/cloud_comp Облачные сервисы, вычисления и безопасность
https://t.me/bigdata_world Data Science, Big Data, Machine Learning
IT новости 📌
https://t.me/htech_news Новости HighTech
https://t.me/all_itnews IT новости на английском
https://t.me/gmorning_news Последнии новости из мира науки
https://t.me/youtips_tricks Технологические советы и хитрости
Шутки программистов 📌
https://t.me/dev_jokes Daily Dev Jokes
https://t.me/itumor ITumor | программисты шутят
SMM, Seo, Wordpress 📌
https://t.me/allsocial_news SMM / Советы, Новости, Лайфхаки
https://t.me/seo_go Новости по SEO продвижению сайтов
https://t.me/news_wordpress Канал о самой популярной CMS
Защита, взлом, безопасность 📌
https://t.me/crypto_security_lab Материалы по информационной безопасности
https://t.me/thehaking Канал о кибербезопасности
https://t.me/Hackme_news Новости из мира хакинга
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
https://t.me/goodw_design Статьи по Веб дизайну
Должен знать 📌
https://t.me/UchuEnglish Английский с нуля
https://t.me/Pomatematike Канал по математике
Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика
Крипта 📌
https://t.me/crypto_moneygo Канал о крипте, новости, инсайды
https://t.me/bitkoinoff Нгвости криптовалют
VR, робототехника 📌
https://t.me/AR_VR_vision Компьютерное зрение, виртуальная реальность
https://t.me/robotics_scince Канал о Робототехнике и автоматизации
https://t.me/network_arch Network architecture and Administration
https://t.me/easy_program Программирование для новичков
https://t.me/testin_new Тестирование
https://t.me/IoTprog Интернет вещей
https://t.me/generalprog General programming
https://t.me/Hware_news Цифровые тенденции
👍2