Библиотека Java разработчика
10.8K subscribers
1.14K photos
564 videos
58 files
1.44K links
📚 Лайфхаки, приёмы и лучшие практики для Java-разработчиков. Всё, что ускорит код и прокачает навыки. Java, Spring, Maven, Hibernate.


По всем вопросам @evgenycarter

РКН clck.ru/3KoGeP
Download Telegram
Как скомпилировать исходники java вручную

В современной разработке многие рутинные процессы автоматизированы достаточно хорошо, поэтому вам не приходится каждый раз компилировать ваши исходники вручную. Я не сомневаюсь, что вы прекрасно знаете, как это делается. А для тех, кто забыл или решил освежить свои знания, рассмотрим небольшой пример.

https://te.legra.ph/Kak-skompilirovat-ishodniki-java-vruchnuyu-01-04
Какие методы жизненного цикла JSP могут быть переопределены?

Возможно переопределить лишь 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>
👍1
А как вы определяете свойства переменными окружения в Spring Boot приложениях?

https://habr.com/ru/post/588985/
👍2
Какая разница между динамическим и статическим содержимым JSP?

Статическое содержимое JSP (HTML, код JavaScript, изображения и т.д.) не изменяется в процессе работы веб приложения.

Динамические ресурсы созданы для того, чтобы отображать свое содержимое в зависимости от пользовательских действий. Обычно они представлены в виде выражений EL (Expression Language), библиотек JSP-тегов и пр.
👍2
Как закомментировать код в 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 страницы в сервлет.
👍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 Вакансии для программистов
👍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.
Взаимодействие JSP - сервлет - JSP.


«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
Пишете на Java или Python и хотите работать в Яндексе?

Тогда приглашаем 22 января на Fast Track для бэкенд-разработчиков. На мероприятии вы можете за один день пройти собеседование и получить оффер в команду HR Tech Яндекса.

HR Tech занимается интранетом Яндекса. Например, это сервисы для процесса найма в Яндекс, учебная платформа Яндекс.Контест и другие сервисы для организации работы сотрудников. Подробнее о команде здесь.

Регистрируйтесь, решайте отборочный тест и до встречи 22 января! Регистрация
👍1
Разбираемся, почему в Java утекает память несмотря на сборщик мусора

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>
👎3👍1
Какие неявные объекты не доступны в обычной JSP странице?

Неявный объект исключений JSP недоступен в обычных JSP страницах и используется на страницах ошибок JSP (errorpage) только для того, чтобы перехватить исключение, выброшенное JSP страницей и далее предоставить какую-либо полезную информацию клиенту.
👎4
Java. Professional Guide
Автор: 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;
👎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 Цифровые тенденции
👍2
Как сконфигурировать параметры инициализации для JSP?

Параметры инициализации для JSP задаются в web.xml файле аналогично сервлетам - элементами servlet и servlet-mapping. Единственным отличием будет указание местонахождения 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>
👎6
Почему не рекомендуется использовать скриплеты (скриптовые элементы) в JSP?

JSP страницы используются в основном для целей отображения представления (view), а вся бизнес-логика (controller) и модель (model) должны быть реализованы в сервлетах или классах-моделях. Обязанность JSP страницы - создание HTML ответа из переданных через атрибуты параметров. Большая часть JSP содержит HTML код, а для того, чтобы помочь верстальщикам понять JSP код страницы предоставляется функционал элементов action, JSP EL, JSP Standart Tag Library. Именно их и необходимо использовать вместо скриптлетов для создания моста между (JSP)HTML и (JSP)Java частями.
👎10
Можно ли определить класс внутри JSP страницы?

Определить класс внутри JSP страницы можно, но это считается плохой практикой:

<%!
private static class ExampleOne {
//...
}
%>

<%
private class ExampleTwo {
//...
}
%>
👎7👍1