TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #435 4.22K
📌 Какие основные особенности появились в спецификации 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 ввел множество полезных особенностей, таких как поддержка аннотаций для конфигурации сервлетов, фильтров и слушателей, асинхронная обработка запросов для улучшения производительности, динамическое добавление компонентов, улучшенная безопасность и общая легкость настройки. Эти нововведения значительно упростили разработку и повысили гибкость и масштабируемость веб-приложений.

🔥 ТОП ВОПРОСОВ С СОБЕСОВ

🔒 База собесов | 🔒 База тестовых
  • 👍 6
  • 🤯 1
More from @easy_java_ru
  1. Oct 11, 2026🤔 Чем отличается where от having ? WHERE и HAVING используются для фильтрации записей, но…
  2. Oct 10, 2026🤔 На основании какой структуры данных реализован ArrayList? ArrayList реализован на базе…
  3. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  4. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  5. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
  6. Oct 7, 2026🤔 Может ли Entity-класс быть абстрактным? Да, Entity может быть абстрактным, если он служ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →