← Назад к вопросам
Какие знаешь методы у Servlet?
2.3 Middle🔥 191 комментариев
#REST API и микросервисы
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# Методы Servlet в Java
Servlet — это Java класс, который расширяет возможности серверов, которые обслуживают запросы через request-response модель. Давайте разберем основные методы интерфейса Servlet и абстрактного класса HttpServlet.
Методы интерфейса Servlet
Любой Servlet должен реализовать пять основных методов:
1. init(ServletConfig config)
Вызывается один раз при инициализации сервлета:
public void init(ServletConfig config) throws ServletException {
super.init(config);
// Инициализация ресурсов (подключение к БД, загрузка конфигов)
System.out.println("Сервлет инициализирован");
}
Когда вызывается: при первом обращении клиента или при запуске сервера (если load-on-startup > 0)
2. service(ServletRequest request, ServletResponse response)
Основной метод — вызывается для каждого запроса:
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String method = request.getMethod();
if ("GET".equals(method)) {
doGet(request, response);
} else if ("POST".equals(method)) {
doPost(request, response);
}
}
3. doGet(HttpServletRequest request, HttpServletResponse response)
Обработка GET запросов:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html><body>");
out.println("<h1>Hello from GET</h1>");
out.println("</body></html>");
out.close();
}
4. doPost(HttpServletRequest request, HttpServletResponse response)
Обработка POST запросов:
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
// Обработка аутентификации
response.setContentType("application/json");
response.getWriter().print("{\"status\":\"success\"}");
}
5. destroy()
Вызывается один раз при удалении сервлета:
public void destroy() {
// Освобождение ресурсов (закрытие соединений с БД)
System.out.println("Сервлет уничтожен");
}
Дополнительные методы HttpServlet
doPut(), doDelete(), doHead(), doOptions(), doTrace()
Для обработки других HTTP методов:
protected void doPut(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// PUT запрос - обновление ресурса
}
protected void doDelete(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// DELETE запрос - удаление ресурса
}
Методы для работы с конфигурацией
ServletConfig config = getServletConfig();
String paramValue = config.getInitParameter("paramName");
ServletContext context = getServletContext();
String realPath = context.getRealPath("/");
Полный пример сервлета
public class MyServlet extends HttpServlet {
private DataSource dataSource;
@Override
public void init(ServletConfig config) throws ServletException {
super.init(config);
// Инициализация подключения к БД
dataSource = lookupDataSource();
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/json");
response.getWriter().print("{\"message\":\"GET successful\"}");
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Обработка POST запроса
}
@Override
public void destroy() {
// Закрытие соединений
closeDataSource();
}
}
Жизненный цикл сервлета
- Загрузка - Сервлет загружается в память
- Инициализация - вызывается
init() - Обработка запросов - вызывается
service()→doGet()/doPost()для каждого запроса - Уничтожение - вызывается
destroy()
Эти методы составляют основу работы с сервлетами в Java web приложениях.