Сервлет также является программой Java, но в сервлете нет основного метода. Кто возьмет на себя роль основного метода на сервете.
Что выступает в роли «основного метода» в сервлете?
Ответы:
Сервлеты предназначены для работы внутри контейнера сервлетов (например, Apache Tomcat). Выполнение сервлета происходит следующим образом: Контейнер сервлета вызывает файл GenericServlet.service()
в сервлете, который обычно вызывает соответствующий метод doXxx()
, например. doGet()
, doPost()
и т. д. Метод doXxx()
отвечает за интерпретация HTTP-запроса и предоставление соответствующего ответа. GenericServlet.service()
примерно аналогичен main()
в простом старом классе Java.
Сервлет работает внутри контейнера (например: tomcat). Этот контейнер выполняет свою работу под jvm. Здесь контейнер принимает «отсутствие основного метода». В простой Java-программе основной метод сообщает начальный поток управления выполнением. Но в случае базового веб-приложения сервлета jvm не нужно искать основной метод. Контейнер сервлета сообщает jvm о запуске потока управления.
Сервлет развернут на сервере приложений Java (контейнер сервлетов). Они какие-то "пассивные". Когда вы пишете сервлет, ваш код сервлета вызывается контейнером всякий раз, когда есть запрос или потребность. Таким образом, вы не видите «основной» в своем сервлете (все это не запускается из сервлета), который находится внутри сервера приложений (вы можете представить, что запуск сервера приложений начинается с какого-то основного).
Если вы ищете область в сервлете для размещения кода, который запускается при запуске (аналогично main()), взгляните на реализацию ServletContextListener.
Два его метода вызываются при запуске и завершении работы приложения.
В сервлете Java нет основного метода, так же как и у ActionListener на Swing JButton нет основного метода. У них обоих есть методы, к которым вы можете подключиться, когда происходит определенное событие (например, щелчок по JButton или HTTP-запрос PUT на HttpServlet). И в обоих случаях вам предоставляется информация о событии, вызвавшем вызов — ActionEvent для JButton и ServletRequest для сервлета.
Думать о сервлетах как об обработчиках событий, вероятно, полезнее, чем думать о них как об отдельном Java-приложении, в котором вы несете ответственность за весь поток управления.
HttpServlet servletName = new ServletClass();
на основеweb.xml
или@WebServlet
и сохраняет его в памяти. Всякий раз, когда настроенныйurl-pattern
совпадает с сервлетом, методservice()
будет вызываться для конкретного экземпляра. 07.01.2010