Эта статья разделяет жизненный цикл и принцип работы сервлета для вашей ссылки. Конкретный контент заключается в следующем
Жизненный цикл сервлета разделен на три этапа:
1. Вызовите метод init () на стадии инициализации
2. Позвоните в метод Service () в ответ на этап запроса клиента
3. Call Discoust () Метод на стадии завершения
Фаза инициализации сервлета:
В следующие моменты контейнер сервлета загружает сервлет:
1. Когда контейнер сервлета запускается, некоторые сервлеты загружаются автоматически. Чтобы реализовать его, вам нужно только добавить следующий код между <servlet> </servlet> в файле web.xml:
<loadon-startup> 1 </loadon-startup>
2. После запуска контейнера сервлета клиент впервые отправляет запрос в сервлет
3. После обновления файла класса Сервлета, перезагрузите сервлет
После того, как сервлет загружен, контейнер сервлета создает экземпляр сервлета и вызывает метод init () init () сервлета для инициализации. Метод init () называется только один раз в течение всей жизни сервлета.
Как работают сервлеты:
Во -первых, давайте кратко объясним процесс получения и ответа на запросы клиентов. Во -первых, клиент отправляет запрос. Сервлет вызывает метод Service () для ответа на запрос. Это можно увидеть через исходный код. Метод Service () соответствует методу запроса. Выберите, чтобы вызвать Doget, Dopost и другие методы, а затем введите соответствующий метод, чтобы вызвать метод логического слоя, чтобы реализовать ответ на клиента. Нет таких методов, как Doget, Dopost и т. Д. В интерфейсе сервлета и Genericservlet. Эти методы определены в Httpservlet, но все они возвращают информацию об ошибках. Поэтому каждый раз, когда мы определяем сервлет, мы должны реализовать такие методы, как Doget или Dopost.
Каждый пользовательский сервлет должен реализовать интерфейс Сервлета. Пять методов определяются на границе раздела сервлета, среди которых три более важных метода включают жизненный цикл сервлета, а именно методы init (), service () и destry (), упомянутые выше. Genericservlet - это общий, не специфичный для любого протокола, сервлета, который реализует интерфейс сервлета. Httpservlet наследует от Genericservlet, поэтому Httpservlet также реализует интерфейс сервлета. Поэтому, когда мы определяем сервлет, нам нужно только унаследовать Httpservlet.
Интерфейс Сервлета и Genericservlet не специфичны для какого -либо протокола, в то время как httpservlet является классом, специфичным для протокола HTTP, поэтому метод Service () реализован в Httpservlet, и запрошенные ServletRequest и Servletresponse и HttpRequestse и HttpRevonse и Httprequestsonse и HttpRequestonponse.
Public void Service (ServletRequest req, Servletresponse Res) бросает ServletException, ioException {httprequest запрос; Ответ httpresponse; try {req = (httprequest) запрос; res = (httpresponse) ответ; } catch (classcastException e) {бросить новое ServletException ("Ответ без HTTP-запроса"); } service (запрос, ответ);}Код, наконец, вызывает метод собственного обслуживания Httpservlet (запрос, ответ), а затем вызывает соответствующий метод DOXXX в соответствии с запросом, поскольку метод DOXXX в Httpservlet возвращает информацию об ошибке.
Защищенная void Doget (httpservletrequest res, httpservletresponse resp) бросает Servletexception, ioexception {String protocol = req.getProtocol (); String msg = istrings.getString ("http.method_get_not_supported"); if (protocol.equals ("1.1")) {resp.senderror (httpservletresponse.sc.method.not.allowed, msg); } esle {resp.senderror (httpservletresponse.sc_bad_request, msg); }}Поэтому нам нужно переопределить эти методы в пользовательском сервлете!
Перед исходным кодом нет секрета!
Фаза запроса ответа сервлета:
Для того, чтобы пользовательские запросы достигли сервлета, контейнер Сервлета создаст объект ServletRequest и объект Servletresponse, специфичный для этого запроса, а затем вызовет метод службы сервлета. Метод обслуживания получает информацию о запросе клиента из объекта ServletRequest, обрабатывает запрос и возвращает информацию о ответе клиенту через объект ServletResponse.
Для Tomcat он поместит пропущенные параметры в хэштату, а определение хэштата - это:
Кода кода выглядит следующим образом: Private Hashtable <String String []> ParamhashStringArray = new Hashtable <String String []> ();
Это карта string-> string [].
Поток HashMap небезопасно, хэш -нить безопасна.
Фаза прекращения сервлета:
Когда веб -приложение прекращается, или контейнер сервлета завершается запущенным, или контейнер сервлета перезагружает новый экземпляр сервлета, контейнер сервлета сначала вызовет метод Destress () Сервлета, который может освободить ресурсы, занятые сервлетом в методе Dressurn ().
Когда создается сервлет:
1. По умолчанию, когда веб -клиент впервые запрашивает доступ к сервлету, веб -контейнер создаст экземпляр сервлета.
2. Когда в элементе <servlet> в файле web.xml указан дочерний элемент <load-on-startup>, в файле Web.xml контейнер Servlet будет создавать и инициализировать объект Servlet в порядке при запуске веб-сервера.
ПРИМЕЧАНИЕ. В файле web.xml у некоторых сервлетов есть только элементы <serlvet> и не имеют элементов <servlet-mapping>, поэтому мы не можем получить доступ к этим сервлетам через URL. Этот сервлет обычно настраивает дочерний элемент <Load-on-startup> в элементе <servlet>, так что контейнер автоматически загружает эти сервлеты и вызовет метод init () при его запусках, завершая некоторые работы по глобальной инициализации.
Когда будет запущено веб -приложение:
1. Когда контейнер сервлета будет запущен, все веб -приложения будут запущены.
2. Контроллер запускает веб -приложение
Сравнение между сервлетом и JSP:
Есть много сходств, которые могут генерировать динамические веб -страницы.
Преимущество JSP заключается в том, что он хорош в производстве веб -страниц, и он более интуитивно понятен в создании динамических страниц, но недостаток в том, что его нелегко отслеживать и устранять устранение неполадок.
Сервлет является чистым языком Java и хорош в процессах обработки и бизнес -логики. Недостаток заключается в том, что не интуитивно понятно генерировать динамические веб -страницы.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.