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

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

Open in Telegram

📈 Analytical overview of Telegram channel Java | Вопросы собесов

Channel Java | Вопросы собесов (@easy_java_ru) in the Russian language segment is an active participant. Currently, the community unites 11 459 subscribers, ranking 10 895 in the Technologies & Applications category and 57 420 in the Russia region.

📊 Audience metrics and dynamics

Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 11 459 subscribers.

According to the latest data from 11 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 11 over the last 30 days and by 3 over the last 24 hours, overall reach remains high.

  • Verification status: Not verified
  • Engagement rate (ER): The average audience engagement rate is 10.83%. Within the first 24 hours after publication, content typically collects 7.26% reactions from the total number of subscribers.
  • Post reach: On average, each post receives 1 241 views. Within the first day, a publication typically gains 832 views.
  • Reactions and interaction: The audience actively supports content: the average number of reactions per post is 6.
  • Thematic interests: Content is focused on key topics such as ставь, void, string, строка, static.

📝 Description and content policy

The author describes the resource as a platform for expressing subjective opinions:
Cайт easyoffer.ru Реклама @easyoffer_adv ВП @easyoffer_vp Тесты t.me/+icUwivvbGOkwNWRi Задачи t.me/+8eqUTboisnkyZjQy Вакансии t.me/+4pspF5nDjgM4MjQy

Thanks to the high frequency of updates (latest data received on 12 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.

11 459
Subscribers
+324 hours
+137 days
+1130 days
Posts Archive
Партнёрская программа рекрутинга в Яндекс Еду Станьте партнёром Яндекс Еды по привлечению курьеров и получите кучу преимущест
Партнёрская программа рекрутинга в Яндекс Еду Станьте партнёром Яндекс Еды по привлечению курьеров и получите кучу преимуществ: 💰Платим до 25 000 ₽ за успешного кандидата 📞Поддержка на всех этапах 📅Свободное расписание 📊Удобные инструменты для работы Приводите новых курьеров и получайте в среднем 187 000 ₽ в месяц! Зарегистрироваться #реклама eda.yandex.ru О рекламодателе

📌 Какие основные особенности появились в спецификации Servlet 3 ? 💬 Спросят с вероятностью 6% Спецификация Servlet 3.0, выпущенная как часть Java EE 6, внесла множество новых особенностей и улучшений в Java Servlet API. Основные нововведения включают поддержку аннотаций, асинхронную обработку запросов, облегчение настройки сервлетов и фильтров, а также улучшенную безопасность. Рассмотрим эти особенности подробнее: 1️⃣ Поддержка аннотаций Введены аннотации, которые позволяют конфигурировать сервлеты, фильтры и слушатели без необходимости редактирования файла web.xml. Это значительно упрощает процесс разработки и улучшает читаемость кода. ➕ `@WebServlet`: для регистрации сервлета.
    import javax.servlet.annotation.WebServlet;
  import javax.servlet.http.HttpServlet;

  @WebServlet("/example")
  public class ExampleServlet extends HttpServlet {
      // Реализация сервлета
  }
  
@WebFilter: для регистрации фильтра.
    import javax.servlet.annotation.WebFilter;
  import javax.servlet.Filter;

  @WebFilter("/*")
  public class ExampleFilter implements Filter {
      // Реализация фильтра
  }
  
@WebListener: для регистрации слушателя.
    import javax.servlet.annotation.WebListener;
  import javax.servlet.ServletContextListener;

  @WebListener
  public class ExampleListener implements ServletContextListener {
      // Реализация слушателя
  }
  
2️⃣ Асинхронная обработка запросов Servlet 3.0 добавляет поддержку асинхронной обработки запросов, что позволяет сервлетам обрабатывать долгосрочные задачи, не блокируя основной поток. Это полезно для улучшения производительности и масштабируемости.
import java.io.IOException;
import javax.servlet.AsyncContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet(urlPatterns = "/asyncExample", asyncSupported = true)
public class AsyncExampleServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        final AsyncContext asyncContext = request.startAsync();
        asyncContext.start(() -> {
            try {
                // Долгосрочная задача
                Thread.sleep(5000);
                response.getWriter().println("Asynchronous processing complete.");
                asyncContext.complete();
            } catch (Exception e) {
                e.printStackTrace();
            }
        });
    }
}
Динамическое добавление компонентов Servlet 3.0 позволяет динамически добавлять сервлеты, фильтры и слушатели программно в ServletContextListener или в любое другое место, где доступен ServletContext.
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRegistration;

public class DynamicServletRegistrationListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        ServletContext context = sce.getServletContext();
        ServletRegistration.Dynamic registration = context.addServlet("dynamicServlet", new ExampleServlet());
        registration.addMapping("/dynamic");
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        // Очистка ресурсов (если необходимо)
    }
}
Servlet 3.0 ввел множество полезных особенностей, таких как поддержка аннотаций для конфигурации сервлетов, фильтров и слушателей, асинхронная обработка запросов для улучшения производительности, динамическое добавление компонентов, улучшенная безопасность и общая легкость настройки. Эти нововведения значительно упростили разработку и повысили гибкость и масштабируемость веб-приложений. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Ищу тех, кто хочет научиться проектировать "Умные дома" Я, Дмитрий Карагеур, основатель компании «Intellectum Homes» и сертифицированный эксперт с 18+ лет опыта автоматизации домов, приглашаю Вас на бесплатный мастер-класс по заработку на проектировании "Умных домов". Всего за 2 с половиной часа Вы узнаете: - Что такое настоящиий "Умный дом" - Почему это один из самых прибыльных бизнесов - Как зайти в эту совершенно новую нишу, в которой практически нет конкуренции - Как начать зарабатывать в ней с нуля Вебинар подойдёт: - Владельцам строительных компаний - Мастерам, которые оказывают услуги по электрике и слаботочке - Всем, кто хочет открыть новый выгодный бизнес и ищет идеи для заработка Узнайте подробнее о мастер-классе и зарегистрируйтесь на него по ссылке ниже. Количество мест ограничено! Жду вас Зарегистрироваться #реклама 16+ smarthome-school.online О рекламодателе

🤔 Что такое строка в Java?
Anonymous voting

📌 Как организовать подключение к базе данных, обеспечить журналирование в сервлете ? 💬 Спросят с вероятностью 6% Настройка подключения к базе данных и журналирования в сервлете Шаг 1: Настройка пула соединений к базе данных Использование пула соединений (например, Apache DBCP) позволяет эффективно управлять соединениями, улучшая производительность и стабильность приложения. 1️⃣ Добавление зависимостей в `pom.xml`:
      <dependencies>
       <dependency>
           <groupId>org.apache.commons</groupId>
           <artifactId>commons-dbcp2</artifactId>
           <version>2.9.0</version>
       </dependency>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>8.0.26</version>
       </dependency>
   </dependencies>
   
2️⃣ Настройка пула соединений:
      import org.apache.commons.dbcp2.BasicDataSource;

   public class DatabaseUtil {
       private static BasicDataSource dataSource;

       static {
           dataSource = new BasicDataSource();
           dataSource.setUrl("jdbc:mysql://localhost:3306/your_database");
           dataSource.setUsername("your_username");
           dataSource.setPassword("your_password");
           dataSource.setMinIdle(5);
           dataSource.setMaxIdle(10);
           dataSource.setMaxOpenPreparedStatements(100);
       }

       public static Connection getConnection() throws SQLException {
           return dataSource.getConnection();
       }
   }
   
Шаг 2: Настройка логирования (SLF4J и Logback) 1️⃣ Добавление зависимостей в dataSource
      <dependencies>
       <dependency>
           <groupId>org.slf4j</groupId>
           <artifactId>slf4j-api</artifactId>
           <version>1.7.32</version>
       </dependency>
       <dependency>
           <groupId>ch.qos.logback</groupId>
           <artifactId>logback-classic</artifactId>
           <version>1.2.6</version>
       </dependency>
   </dependencies>
   
2️⃣ Конфигурация Logback (`logback.xml`):
      <configuration>
       <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
           <encoder>
               <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>
           </encoder>
       </appender>

       <root level="debug">
           <appender-ref ref="STDOUT" />
       </root>
   </configuration>
Шаг 3: Подключение к базе данных и логирование в сервлете
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import org.slf4j.*;

@WebServlet("/databaseServlet")
public class DatabaseServlet extends HttpServlet {
    private static final Logger logger = LoggerFactory.getLogger(DatabaseServlet.class);

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("text/html");
        try (PrintWriter out = response.getWriter();
             Connection connection = DatabaseUtil.getConnection();
             PreparedStatement statement = connection.prepareStatement("SELECT * FROM your_table");
             ResultSet resultSet = statement.executeQuery()) {

            while (resultSet.next()) {
                out.println("<p>" + resultSet.getString("your_column") + "</p>");
            }
        } catch (SQLException e) {
            logger.error("Database connection error", e);
            response.getWriter().println("<p>Error connecting to the database</p>");
        }
    }
}
Для организации подключения к базе данных и обеспечения журналирования в сервлете: 1️⃣ Настройте пул соединений (например, Apache DBCP). 2️⃣ Используйте библиотеку логирования (например, SLF4J с Logback). 3️⃣ Внедрите эти инструменты в сервлет для эффективного управления соединениями и ведения журналов для отслеживания событий и ошибок. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

🔥 Один в поле не воин, поэтому топовый программист должен находится в топ команде. 🧑‍💻 Марк Цукерберг создал первоначальну
🔥 Один в поле не воин, поэтому топовый программист должен находится в топ команде. 🧑‍💻 Марк Цукерберг создал первоначальную версию Facebook в одиночку, но для превращения стартапа в глобальную социальную сеть потребовалась мощная команда. 👌 IT мероприятия - одно из тех мест, где можно найти единомышленников в данной нише. 🔥 Подпишись на канал IT события, чтобы не упустить возможность в реализации своего потенциала.

Кибербезопасность на высшем уровне для вашего бизнеса Защита мобильных устройств сотрудников от всех видов угроз. – Совместим
Кибербезопасность на высшем уровне для вашего бизнеса Защита мобильных устройств сотрудников от всех видов угроз. – Совместимость с iOS, Android и Avrora OS – Защита от вредоносных ПО и антифишинг – Контроль функциональности (запрет камеры, Bluetooth и т.д.) и приложений – Управление безопасностью через единую консоль Перейти на сайт #реклама 16+ go.kaspersky.com О рекламодателе

🤔 К каким конструкциям Java применим модификатор static?
Anonymous voting

📌 Как мы можем обеспечить transport layer security для нашего веб приложения ?Спросят с вероятностью 6% Для обеспечения Transport Layer Security (TLS) в веб-приложении используются протоколы HTTPS (HTTP over TLS/SSL), которые обеспечивают защищенное соединение между клиентом и сервером. Это защищает данные от перехвата и подмены во время передачи. Внедрение его включает несколько шагов: 1️⃣ Получение SSL/TLS сертификата Для использования HTTPS на вашем веб-сервере, вам потребуется SSL/TLS сертификат, который можно получить у сертификационного центра (CA). Некоторые популярные CA включают: ➕ Let’s Encrypt (бесплатный) ➕ DigiCert ➕ Comodo ➕ GlobalSign 2️⃣ Настройка веб-сервера для использования HTTPS В зависимости от вашего веб-сервера (Apache, Nginx, Tomcat и т.д.), процесс настройки будет различаться. Apache HTTP Server 1️⃣ Установка SSL/TLS модуля: Убедитесь, что модуль mod_ssl установлен и включен.
      sudo a2enmod ssl
   sudo systemctl restart apache2
   
2️⃣ Настройка виртуального хоста для HTTPS: Отредактируйте файл конфигурации виртуального хоста (например, /etc/apache2/sites-available/your-site.conf):
      <VirtualHost *:443>
       ServerName example.com
       DocumentRoot /var/www/html

       SSLEngine on
       SSLCertificateFile /path/to/your_certificate.crt
       SSLCertificateKeyFile /path/to/your_private.key
       SSLCertificateChainFile /path/to/chain_file.crt

       <Directory /var/www/html>
           Options Indexes FollowSymLinks
           AllowOverride All
           Require all granted
       </Directory>
   </VirtualHost>
   
3️⃣ Перезапуск Apache:
      sudo systemctl restart apache2
   
Nginx 1️⃣ Настройка конфигурации для HTTPS: Отредактируйте файл конфигурации вашего сайта (например, /etc/nginx/sites-available/your-site):
      server {
       listen 443 ssl;
       server_name example.com;

       ssl_certificate /path/to/your_certificate.crt;
       ssl_certificate_key /path/to/your_private.key;

       root /var/www/html;
       index index.html index.htm;

       location / {
           try_files $uri $uri/ =404;
       }
   }

   server {
       listen 80;
       server_name example.com;

       return 301 https://$host$request_uri;
   }
   
Перезапуск Nginx:
      sudo systemctl restart nginx
   
Apache Tomcat 1️⃣ Настройка `server.xml` для использования HTTPS: Отредактируйте файл server.xml (например, conf/server.xml):
      <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
              maxThreads="150" SSLEnabled="true">
       <SSLHostConfig>
           <Certificate certificateKeystoreFile="conf/your_keystore.jks"
                        type="RSA" />
       </SSLHostConfig>
   </Connector>
   
2️⃣ Создание Keystore и получение сертификата: Создайте keystore и получите сертификат от CA, затем импортируйте сертификат в keystore:
      keytool -genkey -alias tomcat -keyalg RSA -keystore your_keystore.jks
   keytool -import -alias tomcat -file your_certificate.crt -keystore your_keystore.jks
   
Перезапуск Tomcat:
      sudo systemctl restart tomcat
   
3️⃣ Принудительное использование HTTPS Рекомендуется перенаправлять все HTTP-запросы на HTTPS для обеспечения полной безопасности. Примеры для различных серверов: Apache HTTP Server Внутри виртуального хоста для порта 80 добавьте перенаправление:
<VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
</VirtualHost>
Для обеспечения Transport Layer Security (TLS) вашего веб-приложения: 1️⃣ Получите SSL/TLS сертификат. 2️⃣ Настройте ваш веб-сервер для использования HTTPS. 3️⃣ Принудительно перенаправляйте HTTP-запросы на HTTPS. 4️⃣ Обновите конфигурацию приложения и все ссылки для использования HTTPS. 5️⃣ Настройте cookies с атрибутом Secure для защиты данных сессий. Эти шаги помогут вам защитить данные пользователя и предотвратить перехват и подмену данных во время передачи. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

Java Джуниоры! Важное объявление FAANG School в течение 24 часов отдают бесплатно свою библиотеку знаний. Вы можете получить
Java Джуниоры! Важное объявление FAANG School в течение 24 часов отдают бесплатно свою библиотеку знаний. Вы можете получить доступ: – Подробный гайд, как найти работу в IT без опыта – Подборка платформ с вакансиями для java-разработчиков – Пошаговая RoadMap по Java – Мануал по Docker. Основные команды и концепции – Микросервисы. Вопросы с собеседований – Шпаргалка с горячими клавишами JetBrains IDE. Ускоришь работу в 10 раз – Desk setup. Подборка аксессуаров для комфортной работы – Шпаргалка по Kafka Библиотека знаний постоянно пополняется, но бесплатный доступ длится всего сутки. Чтобы получить полезные материалы, переходи по ссылке и жми на оранжевую кнопку.

Методичка: как сделать онлайн-встречи эффективнее Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие п
Методичка: как сделать онлайн-встречи эффективнее Надоело ждать коллег, которые постоянно забывают о встречах, а отсутствие повестки и потерянные договоренности мешают нормально работать? Команда МТС Линк собрала на 37 страницах полезные материалы, чек-листы и кейсы, которые помогают компаниям проводить эффективные совещания в онлайне с помощью сервиса Встречи. Из методички узнаете: - Как создать постоянную ссылку и подключаться на встречи в 2 клика, - Как делать заметки и работать с файлами, не переживая за качество связи и безопасность данных. - Как облегчает жизнь ИИ, который расшифровывает созвоны в текст и автоматически отправляет расшифровку на почту. Еще в методичке описаны 7 способов оценки текущей эффективности ваших онлайн-встреч. Получить гайд можно бесплатно на сайте. Скачать #реклама mts-link.ru О рекламодателе

🤔 Что такое класс в Java?
Anonymous voting

Такси для бизнеса. Яндекс Go Оптимизируйте свои расходы и повысьте эффективность бизнеса с Яндекс Go Узнать больше #реклама b
Такси для бизнеса. Яндекс Go Оптимизируйте свои расходы и повысьте эффективность бизнеса с Яндекс Go Узнать больше #реклама business.go.yandex О рекламодателе

📌 Какой существует эффективный способ удостоверится, что все сервлеты доступны только для пользователя с верной сессией ? 💬 Спросят с вероятностью 6% Для обеспечения доступа к сервлетам только для пользователей с действительной сессией и правильными учетными данными существует несколько подходов. Один из эффективных способов — это использование фильтров (Servlet Filters) для проверки сессии перед обработкой запроса сервлетом. Использование Servlet Filters для проверки сессии Позволяют перехватывать запросы к сервлетам и выполнять необходимые проверки или обработки до передачи запроса сервлету. Вы можете создать фильтр для проверки наличия и корректности сессии пользователя. 1️⃣ Создание фильтра:
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.FilterServletRequest;
import javax.servlet.FilterServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebFilter("/*") // Применение фильтра ко всем запросам
public class SessionValidationFilter implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // Инициализация фильтра (если необходимо)
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        HttpSession session = httpRequest.getSession(false); // false означает не создавать новую сессию, если она отсутствует

        // Проверка наличия сессии и атрибутов сессии (например, логин пользователя)
        if (session == null || session.getAttribute("user") == null) {
            // Перенаправление на страницу логина, если сессия недействительна
            httpResponse.sendRedirect(httpRequest.getContextPath() + "/login");
        } else {
            // Продолжение цепочки фильтров и передача запроса сервлету
            chain.doFilter(request, response);
        }
    }

    @Override
    public void destroy() {
        // Очистка ресурсов фильтра (если необходимо)
    }
}
2️⃣ Регистрация фильтра в web.xml (если не используете аннотации):
<web-app ...>
    <filter>
        <filter-name>SessionValidationFilter</filter-name>
        <filter-class>com.example.SessionValidationFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>SessionValidationFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
Использование декларативной безопасности Позволяет ограничивать доступ к ресурсам на основе ролей пользователей, что тоже может помочь в контроле доступа к сервлетам.
<web-app ...>
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected Area</web-resource-name>
            <url-pattern>/protected/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>USER</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>FORM</auth-method>
        <form-login-config>
            <form-login-page>/login.html</form-login-page>
            <form-error-page>/login-error.html</form-error-page>
        </form-login-config>
    </login-config>

    <security-role>
        <role-name>USER</role-name>
    </security-role>
</web-app>
Для обеспечения доступа к сервлетам только для пользователей с действительной сессией наиболее эффективным способом является использование Servlet Filters для проверки сессии. Фильтры позволяют централизованно управлять доступом к ресурсам и обеспечивать безопасность, а также можно использовать декларативную безопасность в web.xml для управления доступом на основе ролей. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых

🧑‍💻 Если твой английский позволяет ответить только на вопрос "Do you speak English", то с этим нужно что-то делать, будучи программистом. 🫤 Ты в курсе, что ... - говорят по-английски — 20% из всех людей. - Большое кол-во IT документации написано на английском. Хочешь понимать код лучше? Изучи язык, который используется в его основе. 📕 На нашем канале ты постепенно будешь набираться опыта, в этом тебе помогут: - Тесты для изучения английского: проверьте свои знания на практике. - Английский через мемы: учите язык весело и с интересом. - Шпаргалки для повторения: закрепите знания быстро и эффективно. - Английский сленг программиста: станьте настоящим профи в коммуникации. 🔥 Маленький шаг в изучении иностранного откроет перед тобой большие возможности будущего специалиста и значительно повысит твое зп. 🌸 Подпишись, do it!

IT-магистратура УрФУ УрФУ (топ-10 вузов страны) приглашает на уникальную программу, отвечающую самым остро стоящим задачам би
IT-магистратура УрФУ УрФУ (топ-10 вузов страны) приглашает на уникальную программу, отвечающую самым остро стоящим задачам бизнеса в эпоху цифровизации: управление цифровыми проектами! Студенты углубленно изучают: - современные it-технологии - методы управления информационными проектами - продвинутые методы анализа и принятия решений в сфере it-управления - основы разработки и прототипирования информационных систем и веб-приложений Активная поддержка студентов бизнес-сообществом. Все льготы студента (даже отсрочка от армии). 100% онлайн. Изучи весь потенциал цифровых технологий для бизнеса и получи диплом магистра! Узнать больше #реклама 16+ programs.edu.urfu.ru О рекламодателе

🤔 Что такое JVM, JDK, JRE?
Anonymous voting

👩‍💻 Есть опыт в проге, но не растет зп? Может нужно найти крутой оффер? 🗿 Большинство IT специалистов работает за копейки
👩‍💻 Есть опыт в проге, но не растет зп? Может нужно найти крутой оффер? 🗿 Большинство IT специалистов работает за копейки и даже не осознает этого. Лучший способ понять рынок вакансий - стать его частью и начать анализировать. 👍 Предела совершенству нет, что нельзя сказать про зп в рамках одной компании. Подпишись на Мидл работает и повышай свой капитал.

Повышенный гонорар за технические статьи в блог на Хабре Если вы уже автор Хабра или работаете в сфере IT и чувствуете в себе
Повышенный гонорар за технические статьи в блог на Хабре Если вы уже автор Хабра или работаете в сфере IT и чувствуете в себе творческий потенциал, то оставшиеся летние дни — прекрасная возможность посвятить себя писательскому делу! Мы запустили акцию для технических авторов и повысили гонорар за статьи в наш блог на Хабр до 22 000 рублей. Ждем материалы о системном администрировании, программировании, хостинге и серверном оборудовании. Акция действует до 29 августа. Узнать больше #реклама firstvds.ru О рекламодателе

📌 Как уведомить объект в сессии, что сессия недействительна или закончилась ? 💬 Спросят с вероятностью 6% Предоставляется возможность уведомления объектов, находящихся в сессии, о том, что сессия становится недействительной или заканчивается. Для этого объекты могут реализовывать интерфейс HttpSessionBindingListener или HttpSessionListener. Использование HttpSessionBindingListener Позволяет объектам узнавать, когда они добавляются или удаляются из сессии. Методы интерфейса HttpSessionBindingListenervalueBound(HttpSessionBindingEvent event): Вызывается, когда объект добавляется в сессию. ➕ valueUnbound(HttpSessionBindingEvent event): Вызывается, когда объект удаляется из сессии или когда сессия становится недействительной.
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

public class MySessionObject implements HttpSessionBindingListener {

    @Override
    public void valueBound(HttpSessionBindingEvent event) {
        // Код, который выполняется при добавлении объекта в сессию
        System.out.println("Object bound to session: " + event.getSession().getId());
    }

    @Override
    public void valueUnbound(HttpSessionBindingEvent event) {
        // Код, который выполняется при удалении объекта из сессии или при завершении сессии
        System.out.println("Object unbound from session: " + event.getSession().getId());
    }
}
Добавление объекта в сессию
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet("/addObject")
public class AddObjectServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        MySessionObject myObject = new MySessionObject();
        session.setAttribute("myObject", myObject);
        response.getWriter().println("Object added to session.");
    }
}
Использование HttpSessionListener Позволяет отслеживать события создания и уничтожения сессии на уровне приложения. Методы интерфейса HttpSessionListener sessionCreated(HttpSessionEvent se): Вызывается при создании сессии. ➕ sessionDestroyed(HttpSessionEvent se): Вызывается при уничтожении сессии.
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

@WebListener
public class MySessionListener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        // Код, который выполняется при создании новой сессии
        System.out.println("Session created: " + se.getSession().getId());
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        // Код, который выполняется при завершении сессии
        System.out.println("Session destroyed: " + se.getSession().getId());
    }
}
Регистрация слушателей Если вы не используете аннотации, вы можете зарегистрировать слушателей в файле web.xml.
<web-app ...>
    <listener>
        <listener-class>com.example.MySessionListener</listener-class>
    </listener>
</web-app>
Чтобы уведомить объект в сессии о том, что сессия стала недействительной или закончилась, объект может реализовывать интерфейс HttpSessionBindingListener. Для отслеживания событий создания и уничтожения сессий на уровне приложения используется интерфейс HttpSessionListener. Оба интерфейса позволяют выполнять необходимые действия при изменении состояния сессий и управлять ресурсами эффективно. 🔥 ТОП ВОПРОСОВ С СОБЕСОВ 🔒 База собесов | 🔒 База тестовых