ar
Feedback
Java | Вопросы собесов

Java | Вопросы собесов

الذهاب إلى القناة على Telegram

📈 نظرة تحليلية على قناة تيليجرام Java | Вопросы собесов

تُعد قناة Java | Вопросы собесов (@easy_java_ru) في القطاع اللغوي الروسية لاعباً نشطاً. يضم المجتمع حالياً 11 458 مشتركاً، محتلاً المرتبة 10 894 في فئة التكنولوجيات والتطبيقات والمرتبة 57 468 في منطقة روسيا.

📊 مؤشرات الجمهور والحراك

منذ تأسيسه في невідомо، حقق المشروع نمواً سريعاً وجمع 11 458 مشتركاً.

بحسب آخر البيانات بتاريخ 10 يونيو, 2026، تحافظ القناة على نشاط مستقر. خلال آخر 30 يوماً تغيّر عدد الأعضاء بمقدار 10، وفي آخر 24 ساعة بمقدار 2، مع بقاء الوصول العام مرتفعاً.

  • حالة التحقق: غير موثّقة
  • معدل التفاعل (ER): يبلغ متوسط تفاعل الجمهور 10.71‎%. وخلال أول 24 ساعة من النشر يحصد المحتوى عادةً 7.28‎% من ردود الفعل نسبةً إلى إجمالي المشتركين.
  • وصول المنشورات: يحصل كل منشور على متوسط 1 227 مشاهدة. وخلال اليوم الأول يجمع عادةً 834 مشاهدة.
  • التفاعلات والاستجابة: يتفاعل الجمهور بانتظام؛ متوسط التفاعلات لكل منشور يبلغ 6.
  • الاهتمامات الموضوعية: يركز المحتوى على مواضيع رئيسية مثل ставь, void, string, строка, static.

📝 الوصف وسياسة المحتوى

يصف المؤلف القناة بأنها مساحة للتعبير عن الآراء الذاتية:
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+icUwivvbGOkwNWRi Задачи t.me/+8eqUTboisnkyZjQy Вакансии t.me/+4pspF5nDjgM4MjQy

بفضل وتيرة التحديث المرتفعة (أحدث البيانات بتاريخ 11 يونيو, 2026) تحافظ القناة على حداثتها ومستوى وصول مرتفع. وتُظهر التحليلات تفاعلاً نشطاً من الجمهور، ما يجعلها نقطة تأثير مهمة ضمن فئة التكنولوجيات والتطبيقات.

11 458
المشتركون
+224 ساعات
+77 أيام
+1030 أيام
أرشيف المشاركات
🤔 Можно ли использовать Javascript на JSP странице? Да, вы можете использовать JavaScript на JSP-странице. JSP (JavaServer Pages) и JavaScript выполняются на разных уровнях: JSP обрабатывается на сервере и генерирует HTML-код, который затем отправляется клиенту, где JavaScript выполняется на стороне клиента в браузере. Таким образом, можно комбинировать JavaScript и JSP для создания динамичных и интерактивных веб-страниц. 🚩Пример использования JavaScript на JSP-странице 🟠Вставка JavaScript в JSP Вы можете включать JavaScript внутри тегов <script> в вашем JSP-коде, как в обычной HTML-странице. JavaScript-код включен в секцию <head>. Функция showAlert вызывается при нажатии кнопки.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Пример использования JavaScript на JSP</title>
    <script type="text/javascript">
        function showAlert() {
            alert("Это сообщение от JavaScript!");
        }
    </script>
</head>
<body>
    <h1>Пример использования JavaScript на JSP</h1>
    <button onclick="showAlert()">Нажмите меня</button>
</body>
</html>
🟠Использование данных с сервера в JavaScript Вы можете использовать JSP для динамической генерации JavaScript-кода, вставляя данные с сервера. JSP-код вставляет значение переменной message из сервлета в JavaScript. Функция showMessage выводит это сообщение с помощью alert.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    String message = "Привет, это сообщение от сервера!";
%>
<html>
<head>
    <title>Пример использования данных с сервера в JavaScript</title>
    <script type="text/javascript">
        function showMessage() {
            var message = "<%= message %>";
            alert(message);
        }
    </script>
</head>
<body>
    <h1>Пример использования данных с сервера в JavaScript</h1>
    <button onclick="showMessage()">Показать сообщение</button>
</body>
</html>
🟠Взаимодействие с сервером с помощью AJAX Вы можете использовать JavaScript (особенно AJAX) для асинхронного взаимодействия с сервером, отправляя запросы и получая данные без перезагрузки страницы.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Пример AJAX с использованием JSP</title>
    <script type="text/javascript">
        function loadMessage() {
            var xhr = new XMLHttpRequest();
            xhr.open("GET", "message.jsp", true);
            xhr.onreadystatechange = function() {
                if (xhr.readyState == 4 && xhr.status == 200) {
                    document.getElementById("message").innerHTML = xhr.responseText;
                }
            };
            xhr.send();
        }
    </script>
</head>
<body>
    <h1>Пример AJAX с использованием JSP</h1>
    <button onclick="loadMessage()">Загрузить сообщение</button>
    <div id="message"></div>
</body>
</html>
JavaScript использует объект XMLHttpRequest для отправки асинхронного запроса к message.jsp. Ответ от сервера отображается в элементе с id message.
<%@ page contentType="text/plain;charset=UTF-8" language="java" %>
<%
    out.print("Сообщение от сервера: " + new java.util.Date());
%>
Ставь 👍 и забирай 📚 Базу знаний

Тестовое собеседование на Middle Java-разработчика завтра Заходи завтра, 30 октября в 19:00 по мск, на открытое онлайн-собесе
Тестовое собеседование на Middle Java-разработчика завтра Заходи завтра, 30 октября в 19:00 по мск, на открытое онлайн-собеседование от ШОРТКАТ, чтобы узнать: — Чего ждут от кандидатов на Middle позиции в Java-разработке — Какие вопросы задают на интервью и зачем — Как подготовиться к собесу, чтобы получить оффер Интервью проведёт Илья Аров — ведущий разработчик программного обеспечения в T1, ВТБ ID Чтобы записаться на эфир, переходи в бот@shortcut_sh_bot Реклама. ООО "ШОРТКАТ", ИНН: 9731139396, erid: 2VtzqvgtRfz

🤔 Что такое индексы? Индексы в базах данных используются для ускорения операций поиска, сортировки и фильтрации данных. Индексы создаются на столбцах таблиц и позволяют базе данных быстро находить необходимые записи без необходимости полного сканирования таблицы. Однако индексы могут замедлять операции вставки и обновления, так как требуется обновление индексов. Использование индексов улучшает производительность запросов, но требует сбалансированного подхода. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как конфигурируется JSP в дескрипторе развертывания? Позволяет управлять различными аспектами поведения вашего веб-приложения на уровне сервера. Дескриптор развертывания расположен в каталоге WEB-INF вашего веб-приложения и используется для определения настроек сервлетов, фильтров, обработчиков ошибок и других компонентов. 🚩Элементы конфигурации 🟠Назначение сервлета для обработки JSP Когда вы используете JSP, контейнер сервлетов (например, Apache Tomcat) автоматически назначает специальный сервлет для обработки запросов к JSP-страницам. Обычно это происходит автоматически, но вы можете явно указать это в дескрипторе развертывания. Элемент <servlet> определяет сервлет, обрабатывающий JSP. Элемент <servlet-mapping> связывает этот сервлет с URL-шаблоном *.jsp.
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>fork</param-name>
        <param-value>false</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.jsp</url-pattern>
</servlet-mapping>
🟠Обработка ошибок В дескрипторе развертывания можно настроить глобальную обработку ошибок, указывая страницы для различных типов ошибок или исключений. Ошибка с кодом 404 (не найдено) будет обрабатываться страницей notfound.jsp. Любое исключение типа java.lang.Throwable будет обрабатываться страницей error.jsp.
<error-page>
    <error-code>404</error-code>
    <location>/notfound.jsp</location>
</error-page>
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/error.jsp</location>
</error-page>
🟠Настройка сессий Вы можете настроить параметры сессий, такие как время ожидания, в дескрипторе развертывания. Этот параметр указывает, что сессии будут истекать через 30 минут бездействия.
<session-config>
    <session-timeout>30</session-timeout> <!-- Время в минутах -->
</session-config>
🟠Настройка параметров инициализации Параметры инициализации сервлета могут быть настроены через элементы <init-param>. В этом примере параметр development включен, что может использоваться для различных режимов работы сервлета.
<servlet>
    <servlet-name>jsp</servlet-name>
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    <init-param>
        <param-name>development</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое Lambda? Lambda — это анонимная функция, которая может быть передана как аргумент в метод или сохранена в переменную. Лямбда-выражения упрощают код, избавляя от необходимости создавать полноценные классы для реализации функциональных интерфейсов. Они часто используются для краткого описания логики, Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как происходит обработка ошибок с помощью JSTL? Предоставляет набор тэгов для различных задач, включая обработку ошибок. Хотя JSTL не предоставляет прямых средств для глобальной обработки ошибок, она позволяет обрабатывать исключения и показывать соответствующие сообщения об ошибках на уровне страницы. 🟠Использование тега `<c:catch>` Тег <c:catch> используется для перехвата и обработки исключений внутри JSP-страницы. Он позволяет обрабатывать ошибки в JSP-страницах без использования скриплетов. Блок кода, который может вызвать исключение, обернут в тег <c:catch>. Если исключение возникает, оно сохраняется в переменной exception. Тег <c:if> используется для проверки, возникло ли исключение, и отображения сообщения об ошибке.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<c:catch var="exception">
    <%
        // Это может вызвать исключение, например деление на ноль
        int result = 10 / 0;
    %>
</c:catch>

<c:if test="${not empty exception}">
    <p>Произошла ошибка: ${exception.message}</p>
</c:if>
🟠Пример с JSTL и EL Вы можете использовать JSTL вместе с Expression Language (EL) для более элегантного и чистого кода. Мы снова используем тег <c:catch> для перехвата исключения. Внутри <c:catch> используется EL для выполнения операции, которая вызывает исключение. Исключение обрабатывается и отображается пользователю.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

<c:catch var="exception">
    ${1 / 0}  <!-- Попытка деления на ноль вызовет исключение -->
</c:catch>

<c:if test="${not empty exception}">
    <p>Произошла ошибка: ${fn:escapeXml(exception.message)}</p>
</c:if>
🟠Обработка ошибок при работе с внешними ресурсами При работе с внешними ресурсами, такими как базы данных или веб-сервисы, также можно использовать JSTL для перехвата исключений. Мы настраиваем источник данных с помощью тега <sql:setDataSource>. Запрос SQL обернут в тег <c:catch> для перехвата любых ошибок базы данных. Если возникает ошибка, она отображается пользователю.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

<sql:setDataSource var="ds" driver="com.mysql.jdbc.Driver" 
    url="jdbc:mysql://localhost/mydb" 
    user="root" password="password" />

<c:catch var="exception">
    <sql:query dataSource="${ds}" var="result">
        SELECT * FROM non_existent_table
    </sql:query>
</c:catch>

<c:if test="${not empty exception}">
    <p>Произошла ошибка базы данных: ${exception.message}</p>
</c:if>
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое bean? Bean в Java — это объект, управляемый контейнером IoC (Inversion of Control), который используется для внедрения зависимостей. В Spring, JavaBeans — это классы, соответствующие определённым стандартам: они должны иметь конструктор без параметров, геттеры и сеттеры для полей, а также реализовать интерфейс Serializable, если требуется сериализация. Beans широко используются для упрощения работы с объектами в больших приложениях, позволяя контейнеру автоматически управлять их жизненным циклом и зависимостями. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Курс для новичков "IT-специалист с нуля" Курс по софт-скилам в подарок! Попробуйте 6 профессий в IT на практике за 2 мес. Усп
Курс для новичков "IT-специалист с нуля" Курс по софт-скилам в подарок! Попробуйте 6 профессий в IT на практике за 2 мес. Успейте занять место по скидке! Забронировать #реклама 16+ skillfactory.ru О рекламодателе

🤔 Как можно обработать ошибки JSP страниц? Как и в любой другой веб-разработке, ошибки могут возникать по различным причинам, таким как некорректный ввод данных, ошибки сервера, проблемы с базой данных и т.д. Чтобы эффективно обработать эти ошибки. 🚩JSP предоставляет несколько механизмов 🟠Директива `errorPage` Эта директива указывается в исходной JSP-странице и задает путь к другой странице, которая будет использоваться для отображения сообщений об ошибках. Когда на этой странице происходит ошибка, пользователь будет перенаправлен на страницу error.jsp.
<%@ page errorPage="error.jsp" %>
🟠Атрибут `isErrorPage` На странице, которая обрабатывает ошибки (например, error.jsp), необходимо указать атрибут isErrorPage, чтобы сообщить контейнеру JSP, что эта страница предназначена для обработки ошибок.
<%@ page isErrorPage="true" %>
На этой странице вы можете использовать встроенный объект exception для получения информации об ошибке:
<%@ page isErrorPage="true" %>
<html>
<head>
    <title>Ошибка</title>
</head>
<body>
    <h1>Произошла ошибка</h1>
    <p>Ошибка: <%= exception.getMessage() %></p>
</body>
</html>
🚩Конфигурирование в `web.xml` Вы можете указать глобальную обработку ошибок в конфигурационном файле web.xml вашего веб-приложения. Это позволяет обрабатывать ошибки на уровне сервлета. Если сервер вернет ошибку 404 (страница не найдена), пользователь будет перенаправлен на страницу notfound.jsp. Если возникает любое исключение (например, java.lang.Throwable), пользователь будет перенаправлен на страницу error.jsp.
<error-page>
    <error-code>404</error-code>
    <location>/notfound.jsp</location>
</error-page>
<error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/error.jsp</location>
</error-page>
🚩Использование `try-catch` блоков в скриплетах В некоторых случаях вы можете использовать блоки try-catch непосредственно в JSP для обработки определенных исключений:
<%@ page import="java.sql.*, java.io.*" %>
<%
try {
    // код, который может вызвать исключение
} catch (SQLException e) {
    out.println("Ошибка базы данных: " + e.getMessage());
} catch (IOException e) {
    out.println("Ошибка ввода/вывода: " + e.getMessage());
} catch (Exception e) {
    out.println("Произошла ошибка: " + e.getMessage());
}
%>
Ставь 👍 и забирай 📚 Базу знаний

👀 Вы все еще не слышали про канал Путь в IT? Автор (Илья) на своем примере показывает, через что приходится проходить начина
👀 Вы все еще не слышали про канал Путь в IT? Автор (Илья) на своем примере показывает, через что приходится проходить начинающему специалисту. 😉 Почему такого контента вы еще не видели? Илья создает уникальные видео, совмещая тренировки, бытовые моменты и рабочий процесс. Сейчас начинающий специалист поступил в вуз и переехал в другой город, поэтому контент будет еще интересней. Если хочешь узнать админа лучше, зайди в закреп его канала. 👋 Подписывайся, данный канал будет разжигать в тебе огонь. Путь в IT

🤔 Что такое функциональный интерфейс? Функциональный интерфейс в Java — это интерфейс, который содержит только один абстрактный метод и может быть реализован с помощью лямбда-выражений или ссылок на методы. Примеры функциональных интерфейсов включают Runnable, Callable и Function. Такие интерфейсы используются в функциональном программировании для передачи поведения (функций) в методы. Аннотация @FunctionalInterface помогает обозначить, что интерфейс предназначен для функционального программирования. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как
Запустите рекламу в телеграм-каналах с Яндекс Директом Перфоманс-реклама теперь в телеграм-каналах ⚡ Яндекс Директ знает, как привлечь целевую аудиторию 💰👌 Попробовать #реклама yandex.ru О рекламодателе

🤔 Почему не нужно конфигурировать стандартные JSP теги в web.xml? 🚩Причины 🟠Простота использования стандартных тегов Стандартные JSP теги, такие как <%@ page %>, <%@ include %>, <%@ taglib %>, а также теги JSTL (JavaServer Pages Standard Tag Library), уже встроены в JSP контейнер и готовы к использованию без дополнительной конфигурации. Это упрощает разработку и уменьшает количество необходимого конфигурационного кода. 🟠Автоматическое определение контейнером Современные JSP контейнеры (например, Apache Tomcat) автоматически распознают и обрабатывают стандартные теги JSP и JSTL без необходимости явного указания в web.xml. Это позволяет избежать излишних конфигурационных шагов и сконцентрироваться на разработке бизнес-логики. 🟠Использование аннотаций Вместо конфигурации в web.xml в современных Java веб-приложениях часто используются аннотации для определения сервлетов, фильтров и слушателей. Аннотации упрощают процесс конфигурации и делают код более чистым и читабельным. 🟠Стандартизация и совместимость Стандартные теги JSP и JSTL были созданы для стандартизации и упрощения разработки JSP страниц. Они широко поддерживаются всеми контейнерами, что обеспечивает их правильную работу без дополнительной конфигурации. 🚩Пример использования JSTL без конфигурации в web.xml В данном примере используется стандартная библиотека тегов JSTL (библиотека JSTL core). Благодаря встроенной поддержке JSTL в контейнере, нет необходимости указывать эту библиотеку в web.xml.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
    <c:if test="${not empty user}">
        <p>Привет, ${user.name}!</p>
    </c:if>
</body>
</html>
Ставь 👍 и забирай 📚 Базу знаний

🤔 Что такое ACID? ACID — это набор принципов, которые обеспечивают надёжность транзакций в базах данных: атомарность (все операции транзакции выполняются как единое целое или не выполняются вовсе), согласованность (после завершения транзакции данные остаются в согласованном состоянии), изолированность (транзакции не влияют друг на друга) и долговечность (данные сохраняются после успешного завершения транзакции). Соблюдение этих принципов помогает предотвратить повреждение или потерю данных. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Как сделать перенос строки в HTML средствами JSP? В JSP можно сделать перенос строки в HTML несколькими способами. Основные методы, которые включают использование стандартных HTML-тегов, предопределенных библиотек тегов JSP (например, JSTL) и создание собственных тегов. 🟠Использование стандартных HTML-тегов Наиболее простой способ вставить перенос строки в HTML - это использовать тег <br/>, который обозначает разрыв строки.
<%
    String text = "This is line 1.\nThis is line 2.\nThis is line 3.";
    text = text.replace("\n", "<br/>");
%>
<%= text %>
🟠Использование JSTL и функции форматирования JSTL (JavaServer Pages Standard Tag Library) предоставляет мощные инструменты для работы с текстом и данными. Мы можем использовать функции JSTL для замены символов новой строки на теги <br/>. Подключите библиотеку JSTL
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
Используйте JSTL для замены символов новой строки
<%
    String text = "This is line 1.\nThis is line 2.\nThis is line 3.";
%>
<c:out value="${fn:replace(text, '\n', '<br/>')}" escapeXml="false"/>
🟠Создание собственного тега для переноса строки Если вам часто нужно делать переносы строк, имеет смысл создать пользовательский тег для этой задачи. Создайте класс обработчика тега
package com.example.tags;

import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import java.io.IOException;

public class LineBreakTag extends TagSupport {
    private String text;

    public void setText(String text) {
        this.text = text;
    }

    @Override
    public int doStartTag() throws JspException {
        JspWriter out = pageContext.getOut();
        try {
            if (text != null) {
                text = text.replace("\n", "<br/>");
                out.print(text);
            }
        } catch (IOException e) {
            throw new JspException(e);
        }
        return SKIP_BODY;
    }
}
Определите дескриптор тега (taglib.tld)
<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
                            http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
        version="2.0">
    <tlib-version>1.0</tlib-version>
    <short-name>example</short-name>
    <uri>http://www.example.com/tags</uri>

    <tag>
        <name>lineBreak</name>
        <tag-class>com.example.tags.LineBreakTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>text</name>
            <required>true</required>
        </attribute>
    </tag>
</taglib>
Используйте пользовательский тег в JSP
<%@ taglib uri="http://www.example.com/tags" prefix="ex" %>
<html>
<head>
    <title>Custom Line Break Tag Example</title>
</head>
<body>
    <h1>Using Custom Line Break Tag</h1>
    <ex:lineBreak text="This is line 1.\nThis is line 2.\nThis is line 3."/>
</body>
</html>
Ставь 👍 и забирай 📚 Базу знаний

😂 На одном кодинге уже давно не вывезешь, перспектива 2024 года - Информационная Безопасность Ловите два канала на тему ИБ и
😂 На одном кодинге уже давно не вывезешь, перспектива 2024 года - Информационная Безопасность Ловите два канала на тему ИБ и хакинга Арсенал Безопасника - Проект по кибербезопасности - сборник лучших инструментов и утилит по OSINT, хакингу и деанону Бункер Хакера - Все что необходимо, для того чтобы начать свой путь в безопасности - инструменты, книги, справочники, гайды и ресурсы.

🤔 Что такое Stream в Java? Stream в Java — это последовательность данных, поддерживающая операции над элементами в функциональном стиле, такие как фильтрация, преобразование и агрегирование. Streams не хранят данные, а обрабатывают их по мере необходимости, что позволяет работать с большими объемами данных без создания дополнительных коллекций. Стримы могут быть как конечными (например, sum(), collect()), так и промежуточными (filter(), map()). Stream API поддерживает параллельную обработку данных для повышения производительности. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний

🤔 Приведи пример использования собственных тегов? 1⃣Создание обработчика тега (Tag Handler) Напишем класс обработчика тега, который выводит персонализированное приветствие.
package com.example.tags;

import javax.servlet.jsp.tagext.TagSupport;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import java.io.IOException;

public class GreetingTag extends TagSupport {
    private String name;

    // Сеттер для установки значения атрибута "name"
    public void setName(String name) {
        this.name = name;
    }

    @Override
    public int doStartTag() throws JspException {
        JspWriter out = pageContext.getOut();
        try {
            if (name != null && !name.isEmpty()) {
                out.print("Hello, " + name + "!");
            } else {
                out.print("Hello, Guest!");
            }
        } catch (IOException e) {
            throw new JspException(e);
        }
        return SKIP_BODY; // Не обрабатываем тело тега
    }
}
2⃣Создание дескриптора тега (Tag Descriptor) Создадим файл taglib.tld, описывающий наш тег.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
                            http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 
        version="2.0">
    <tlib-version>1.0</tlib-version>
    <short-name>example</short-name>
    <uri>http://www.example.com/tags</uri>

    <tag>
        <name>greeting</name>
        <tag-class>com.example.tags.GreetingTag</tag-class>
        <body-content>empty</body-content>
        <attribute>
            <name>name</name>
            <required>false</required>
        </attribute>
    </tag>
</taglib>
3⃣Использование пользовательского тега в JSP Создадим JSP-страницу, на которой будем использовать наш пользовательский тег.
<%@ taglib uri="http://www.example.com/tags" prefix="ex" %>
<html>
<head>
    <title>Custom Tag Example</title>
</head>
<body>
    <h1>Using Custom Tag</h1>
    <ex:greeting name="Alice"/>
    <br>
    <ex:greeting/>
</body>
</html>
4⃣Компиляция и развертывание Убедитесь, что файл GreetingTag.class размещен в директории WEB-INF/classes/com/example/tags/. Убедитесь, что файл taglib.tld находится в директории WEB-INF. Ставь 👍 и забирай 📚 Базу знаний

📺 Уникальная база записей IT собеседований 180+ записей реальных собеседований на программиста, тестировщика, аналитика и прочие IT профы. Записи собесов от ведущих компаний: Сбер, Яндекс, ВТБ, Тинькофф, Озон, Wildberries и т.д. 🎯 Переходи по ссылке и присоединяйся к базе, чтобы прокачать свои шансы на успешное трудоустройство! У тебя есть запись собеседования? Мы готовы ее купить и заплатим до 3000 руб. за каждую

🤔 Какие есть принципы ООП? Принципы ООП включают: инкапсуляцию (скрытие деталей реализации и защита данных через методы доступа), наследование (создание новых классов на основе существующих), полиморфизм (способность объектов разных классов реагировать на одни и те же вызовы методов) и абстракцию (выделение ключевых характеристик объекта и исключение ненужных деталей). Эти принципы способствуют созданию более структурированного, расширяемого и поддерживаемого кода. Ставь 👍 если знал ответ, 🔥 если нет Забирай 📚 Базу знаний