← Назад к вопросам

Какие знаешь методы у 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();
    }
}

Жизненный цикл сервлета

  1. Загрузка - Сервлет загружается в память
  2. Инициализация - вызывается init()
  3. Обработка запросов - вызывается service()doGet()/doPost() для каждого запроса
  4. Уничтожение - вызывается destroy()

Эти методы составляют основу работы с сервлетами в Java web приложениях.

Какие знаешь методы у Servlet? | PrepBro