Сколько знают технология сервлетов Java Web программирования?
1. Основы сервлета <br /> Для разработки технологий сервлета Sun Company предоставляет некоторые интерфейсы и классы колонны, наиболее важным из которых является интерфейс Javax.servlet.servlet. Двумя важными пакетами являются javax.servlet и javax.servlet.http. Сервлет - это класс, который реализует интерфейс сервлета. Он называется и создается веб -контейнером (Tomcat/Jetty и т. Д.) Для получения и ответа на запросы пользователей. 5 Абстрактных методов определены в интерфейсе сервлета:
Классовая структура сервлета верхнего уровня заключается в следующем:
2. Первая программа сервлета
Создайте новый веб -проект Java, а затем создайте новый класс Hello. Исходный код hello.java выглядит следующим образом:
пакет zzz; импорт java.io.ioexception; import java.io.printwriter; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservervess; Doget (httpservlectrequest-запрос, httpservletresponse response) throws ioException {// установить ответ ответа ответа. Printwriter Out = response.getWriter (); out.println ("Hello World"); } @Override public void dopost (httpservletrequest, httpservletresponse response) throws ioexception {this.doget (запрос, ответ); }}Файл конфигурации web.xml выглядит следующим образом:
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee "//xmlns.jcp.org/xml/ns/javaee "//xmlns.jcp.org/xml/ns/javaee xsi: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/weece_3_1" id = "webApp_id" version = "3.1"> <Slame-name> zzz </display-name> <servlet> <!-Регистр Сервлет-> <Servlet-name> hello </servlet-name> <!-Укажите имя сервиза-> <servlet-class> zzz.hello </servlet-class> <!-Укажите имя Servlet Full Class-> </servlet> <! -> <Servlet-name> hello </servlet-name> <!-Укажите имя сервлета-> <url-pattern>/hello </url-pattern> <!-Укажите виртуальный путь, чтобы получить доступ к сервиру-> </servlet> </web-app>
Начало и запуск дисплеев браузера следующим образом:
3. Жизненный цикл сервлета
Жизненный цикл сервлета примерно разделен на 3 этапа, стадию инициализации, этап работы и этап разрушения . Ниже приведены подробные описания каждого этапа:
Фаза инициализации: Когда клиент делает запрос в контейнер Сервлета для доступа к сервлету, контейнер сначала анализирует запрос, чтобы проверить, находится ли объект Сервлета в памяти, и если он используется напрямую; В противном случае создайте объект сервлета, а затем вызовите метод init (). Обратите внимание, что init () будет вызвана только один раз в течение всего цикла объявления сервлета.
Стадия бега: это самый важный этап сервлета. На этом этапе контейнер будет построить объект ServletRequest и ServletResponse в качестве параметров и передавать его в метод сервиса Service (). Для каждого доступа сервлета контейнер сервлета будет вызывать метод Service () один раз. Метод Service () будет называться несколько раз в течение всего жизненного цикла сервлета
Стадия разрушения: когда сервер закрыт или веб -приложение удалено из контейнера, этот этап будет введен. В настоящее время будет вызван метод Destress (). В течение всего жизненного цикла метод Destroy () будет называться только один раз. Когда клиент сначала обращается к сервлету, контейнер создаст объект сервлета, но иногда есть надежда, что объект сервлета будет запущен, как только Tomcat будет запущен. Как справиться с этим? В настоящее время вам нужно только использовать элемент <Load-on-startup> в web.xml. Пример конфигурации заключается в следующем:
<servlet> <servlet-name> hello </servlet-name> <servlet-class> zzz.hello </servlet-class> <!-Автоматическая загрузка программы сервлета-> <load-startup> 1 </load-on-startup> </servlet> <servlet-mapping> <servlet-name> hello </servlet-name> <url-pattern>/hello </hello </hello </hello </hello </hello </hello </hello </hello </hello </hello </url-mapater> url
4. ServletConfig и ServletContext
Во время интерфейса ServletConfig , если требуется некоторая вспомогательная информация, такая как кодирование файлов, компании, использующие сервлеты и т. Д., Эта информация может быть настроена с использованием элемента <init-param> в web.xml. Когда Tomcat инициализирует сервлет, информация о конфигурации сервлета будет инкапсулирована в объект ServletConfig и передана в сервлет через init (конфигурация ServletConfig). ServletConfig определяет серию методов получения информации о конфигурации:
Далее, возьмите GetInitParameter () в качестве примера, чтобы объяснить использование этого метода:
Файл конфигурации web.xml выглядит следующим образом:
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee "//xmlns.jcp.org/xml/ns/javaee "//xmlns.jcp.org/xml/ns/javaee xsi: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/weece_3_1" id="WebApp_ID" version="3.1"> <display-name>zzz</display-name> <servlet> <servlet-name>Hello</servlet-name> <servlet-class>zzz.Hello</servlet-class> <init-param> <param-name>company</param-name> <param-value>dahua</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name> hello </servlet-name> <url-pattern>/hello </url-pattern> </servlet-mapping> </web-app>
Hello.java file заключается в следующем:
Пакет zzz; импорт java.io.ioexception; import java.io.printwriter; import javax.servlet.servletconfig; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservlectrequest; import javax.servlece.http.httpserservelcevestrequest; import javax.servlece.httpsesperservestrequest; Httpservlet {@override public void doget (httpservletrequest, httpservlectresponse response) Throws ioexception {// Установить ответ ответа ответа. SetContentType ("Text/html; charset = utf-8"); Printwriter Out = response.getWriter (); ServletConfig config = this.getServletConfig (); String param = config.getinitParameter ("Компания"); out.println ("Компания:" + Param); } @Override public void dopost (httpservletrequest, httpservletresponse response) throws ioexception {this.doget (запрос, ответ); }} Интерфейс ServletContext
Когда контейнер сервлета запускается, для каждого веб -приложения создается уникальный объект ServletContext для представления текущего веб -приложения. Этот объект не только инкапсулирует всю информацию о веб -приложении, но также реализует обмен данными между несколькими объектами сервлета. В web.xml вы можете не только настраивать информацию об инициализации сервлета, но и настраивать информацию инициализации всего веб -приложения. Метод конфигурации следующим образом:
<Stext-param> <-param-name> name </param-name> <param-value> luoxn28 </param-value> </context-param> <context-param> <param-name> Компания </param-name> <param-value> dahua </param-value> </context-param>
ПРИМЕЧАНИЕ. В элементе <context-param> может быть только один <param-name> и <param-value>, а приведенная выше конфигурация настроена в рамках <beb-app> в web.xml. Hello.java file заключается в следующем:
Пакет zzz; импорт java.io.ioexception; import java.io.printwriter; import java.util.enumeration; import javax.servlet.servletcontext; импорт javax.servlet.http.httpservlet; import javax.servlet.htp.httpservlectrequest; javax.servlet.http.httpservletresponse; public class hello extends httpservlet {@override public void doget (httpservletrequest-запрос, httpservletresponse response) throws ioexception {// set response response.setcontenttypepe ("text/htexception {// set responce response.setcontenttypepe (" Text/htexception {// set response response.setContentTypepe ("text/htexception; Printwriter Out = response.getWriter (); Context vervletcontext = this.getServletContext (); Enumeration <string> paramnames = context.getinitParameterNames (); while (paramnames.hasmoreelements ()) {string name = paramnames.nextelement (); String value = context.getinitParameter (name); out.println (name + ":" + value + "<br/>"); }} @Override public void dopost (httpservletrequest, httpservletresponse response) throws ioexception {this.doget (запрос, ответ); }}Поскольку все сервлеты в веб -приложении совместно используют объект ServletContext, свойства домена объекта ServletContext можно получить всеми сервлетами в веб -приложении. В интерфейсе ServletContext определяются четыре метода для добавления, удаления и установки свойств домена ServletContext:
С помощью вышеуказанного метода вы можете реализовать обмен данными между несколькими сервлетами. Этот конкретный пример не будет размещен с кодом. Есть много информации, на которую можно ссылаться в Интернете, например, нажатие:
Javaweb Servlet Redugary (II)
Вышеуказанное посвящено этой статье, и я надеюсь, что для каждого будет полезно понять технологию сервлета Java Web.
Ссылки
1.