Servlet в въпроси и отговори
Какво е сървлет?
Servlet - един Java интерфейс, реализацията на който ви позволява да се разшири функционалността на сървъра. За да си взаимодействат с сървлета използва принципа на искането за отговор. Сървлет технология определя HTTP сървлет ориентирани класове. За да създадете сървлет трябва да използвате javax.servlet и javax.servlet.http пакети. включително необходимите интерфейси и класове.
Javax.servlet.Servlet интерфейс се състои от три основни методи и два спомагателни метод.
сървлет контейнер
Servlet контейнер - е сървър, който осигурява сървлети система за подпомагане (Servlet жизнения цикъл), в съответствие с приетите правила и спецификации. Servlet контейнер може да функционира като самостоятелен уеб сървър, и да си взаимодействат с други, например Apache уеб сървър.
Най-често прилагане на контейнера за сървлет. Apache Tomcat, GlassFish, Jetty, JBoss, IBM WebSphere, Oracle Weblogic.
GenericServlet и HttpServlet
Сървлет API, в допълнение към собствената си интерфейс и съдържа няколко класа на сървлети, които могат да послужат като основа. В основата на всички тези класове е абстрактен клас javax.servlet.GenericServlet.
Както може да се види от класа определение GenericServlet включва всички методи и Servlet ServletConfig интерфейси. Не е реализирано метод е само абстрактен начин на услуга. метод услуга се нарича всеки път сървлета.
Пример сървлет Първо, наследи свойства GenericServlet
Javax.servlet.http.HttpServlet клас наследява GenericServlet.
HttpServlet осигурява още по-голямо удобство за програмист и има много полезни методи:
Интерфейси ServletRequest и HttpServletRequest
Искане от браузърът получи сървъра като HttpServletRequest обект. Този интерфейс наследява ServletRequest интерфейс. ServletRequest методи интерфейс предоставят допълнителна информация, включително подробности за сървлета, и протокола HTTP заявка:
Когато се обадите сървлета (адреса на сървъра), като правило, премина параметри и техните стойности. За да се анализира параметрите и техните стойности, използвани методи за екстракция, описани на страница клас HttpServlet.
Интерфейси ServletResponse и HttpServletResponse
ServletResponse интерфейс е проектиран за генериране и изпращане на данни за клиента. Всички методи ServletResponse инструменти за изпълнението на тази цел. Следните методи позволяват да получите линкове към изходящите потоци:
Ако метод getOutputStream () вече е бил наречен за този отговор се генерира IllegalStateException.
HttpServletResponse интерфейс наследява ServletResponse интерфейс и включва няколко полезни методи, които са описани от класа на страница HttpServlet. На същата страница е пример за използването на HttpServletResponse да образуват отговор на клиента.
Работещи сървлета
сървлет контейнер зарежда сървлета, когато първата заявка на клиента. В някои случаи, ако сървлет съраунд, трябва да го изтеглите директно в началото на прилагането да се намали времето за обработка на искането. За да направите това, използвайте маркера
Стойността трябва да е цяло число. Ако стойността е отрицателна, тогава сървлета се зарежда по искане на клиента, в други случаи, сървлета се зарежда при стартиране.
сървлет филтър
Servlet филтър трябва да изпълни javax.servlet.Filter интерфейс. който определя три метода:
първоначален на метод () настроен филтър конфигурация. метод doFilter изпълнява основната функция на филтъра. сървлет контейнер разговори първоначален () веднъж, за да се подготви филтъра за работа, и причинява doFilter (), когато потребителят въвежда / браузър иска филтъра трябва да се намеси. След прилагането приключи своята работа, наречена унищожи () метод.
Servlet филтър може да се използва за:
- определяне на съдържанието на искането;
- модифициране на заглавката искане и данни;
- модифициране на заглавката и данните за отговор.
Servlet филтър е свързан с прилагането на ЕВРОВОК web.xml. Следващият списък се определя от филтър сървлет поздрави. които могат да бъдат причинени от пряк адрес към него. Пример за използване на този филтър може да се намери на пример страницата сървлет, здравей!
Servlet филтър може да бъде конфигуриран така, че тя ще работи само с един сървлет, сървлет, или група към група от страници. Следващият в списъка приложение diskriptora web.xml FILTERNAME филтъра се свързва с сървлет и ServletName страници * .html.
Конфигурацията на сървлета, ServletConfig
Javax.servlet.ServletConfig интерфейс се използва за предаване на информация за конфигурацията сървлет. Всеки сървлет има своя собствена ServletConfig. който е отговорен за създаването на контейнер сървлет.
По долу в метода на първоначален на инициализиране на конзолата показва името на параметри и mname. приложение (вж. по-горе пример), посочен в дескриптор.
Контекстът на сървлет, ServletContext
За достъп до параметрите от сървлета на WEB-приложението, трябва да използвате javax.servlet.ServletContext интерфейс. ServletContext обект е уникален и е достъпна за всички аплети.
ServletContext позволява достъп до параметрите на уеб приложения, определени в маркер web.xml ЕВРОВОК
ServletContext обект може да се получи използвайки метод getServletContext (ServletConfig интерфейс).
ServletContext интерфейс определя достъп до следното за работа с атрибути:
- обществен getAttribute Object (String име)
- обществен java.util.Enumeration getAttributeNames ()
- обществени невалидни setAttribute (String име, обект обект)
- обществени невалидни removeAttribute (String име)
Роля атрибути могат да изпълнят целта на всеки клас. Целта на тези функции е свързано с превоза несвързани помежду си сървлети различни предмети.
Различията ServletConfig и ServletContext
- ServletConfig обект е уникален за всеки сървлет и ServletContext определено за цялата заявлението;
- ServletConfig използва за сървлет инициализация параметри, както и за получаване на параметри приложение ServletContext инициализация за всички сървлети;
- ServletConfig обект не позволява да се определят параметрите / атрибути, а те могат да бъдат настроени в обекта ServletContext. които стават достъпни за всички аплети.
Така да се каже, че ServletConfig индивидуално за всеки сървлет и ServletContext - за уеб приложения и е достъпна за всички аплети.
интерфейс RequestDispatcher
RequestDispatcher интерфейс се използва за работа с допълнителни ресурси, които включват още един сървлет, JSP страница или документ HTML. Обикновено, този интерфейс се използва за вътрешна комуникация между сървлети в същия контекст. Достъпът до RequestDispatcher може да бъде получена с помощта на метод getRequestDispatcher (String URL) ServletContext интерфейс.
RequestDispatcher реализира два метода:
- анулира напред (искане ServletRequest, ServletResponse отговор) - искане предаване / контрол на друг ресурс на сървъра;
- нищожен включват (искане ServletRequest, ServletResponse отговор) - включване на допълнителен източник на съдържание в отговор.
Различията методи напред () и sendRedirect ()
напред (RequestDispatcher интерфейс) метод се използва за изпращане на искането на друг ресурс в рамките на сървлет. Това означава, че действието се извършва в една единствена стъпка. sendRedirect метод () ServletResponse интерфейс е на два етапа. При този метод, приложение WEB клиент връща отговор с код на състоянието 302 (пренасочване) и във връзка с изпращането на искането. Браузърът изпраща до един напълно нов искане за връзка за изтегляне. Т.е., напред () се преработва в контейнера, и sendRedirect () се преработва в браузъра.
С цел да се организира преходът в рамките на едно и също приложение, трябва да използвате напред (), тъй като Този метод реагира по-бързо от sendRedirect (), като се използват допълнителни мрежови ресурси.
Пример за използване напред () и sendRedirect () в сървлет, представена тук.