Сервлеты
TRANSCRIPT
![Page 1: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/1.jpg)
Разработка серверного программного обеспечения
Servlet. Создание динамического приложения.
![Page 2: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/2.jpg)
Серверное решение
Операционная система и/или пакеты программ
оптимизированная под выполнение компьютером функций сервера
и/или содержащие в своём составе комплект программ для реализации
типичного набора сервисов.
![Page 3: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/3.jpg)
Веб-приложение
Клиент-серверное приложение, в котором клиентом выступает браузер, а
сервером — веб-сервер. Логика веб-приложения распределена между сервером и клиентом, хранение
данных осуществляется, преимущественно, на сервере, обмен информацией происходит по сети.
![Page 4: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/4.jpg)
Веб-приложение
Одним из преимуществ такого подхода является тот факт, что
клиенты не зависят от конкретной операционной системы
пользователя, поэтому веб-приложения являются кросс
платформенными сервисами.
![Page 5: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/5.jpg)
Клиент
Клиентская часть приложения выполняется на компьютере пользователя приложения.
Как правило она не содержит бизнес-логики, а способна только посылать запросы и отображать результат присланный сервером.
![Page 6: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/6.jpg)
Сервер
Серверная часть содержит данные необходимые для выполнения запросов от
клиента, систему обработки входящих и исходящих запросов, бизнес-логику
приложения и другие сервисы.
![Page 7: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/7.jpg)
Клиент
![Page 8: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/8.jpg)
Программы и утилиты для сетевого программирования
![Page 9: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/9.jpg)
Ant
Apache Ant (англ. ant — муравей и акроним — «Another Neat Tool») — утилита для автоматизации процесса сборки программного продукта.
![Page 10: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/10.jpg)
Maven
Apache Maven — фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM (англ. Project Object Model), являющемся подмножеством XML.
![Page 11: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/11.jpg)
Maven
Maven обеспечивает декларативную, а не императивную (в отличие Ant) сборку проекта. В файлах описания проекта содержится его спецификация, а не отдельные команды выполнения.
![Page 12: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/12.jpg)
Maven
Все задачи по обработке файлов, описанные в спецификации, Maven выполняет посредством их обработки последовательностью встроенных и внешних плагинов.Maven используется для построения и управления проектами, написанными на Java, C#, Ruby, Scala, и других языках
![Page 13: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/13.jpg)
Основные преимущества Maven
Независимость от OS. Сборка проекта происходит в
любой операционной системе. Файл проекта один и тот же.
![Page 14: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/14.jpg)
Основные преимущества Maven
Управление зависимостями.Редко какие проекты пишутся без
использования сторонних библиотек(зависимостей).
Maven позволяет управлять такими сложными зависимостями.
Что позволяет разрешать конфликты версий и в случае необходимости легко переходить на новые версии библиотек.
![Page 15: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/15.jpg)
Основные преимущества Maven
Возможна сборка из командной строки.
Такое часто необходимо для автоматической сборки проекта на
сервере (Continuous Integration).
![Page 16: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/16.jpg)
Основные преимущества Maven
Хорошая интеграция со средами разработки.
Основные среды разработки на java легко открывают проекты которые
собираются c помощью maven. При этом зачастую проект настраивать не нужно - он сразу готов к дальнейшей
разработке.
![Page 17: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/17.jpg)
Основные преимущества Maven
Декларативное описание проекта.
Если с проектом работают в разных средах разработки, то maven удобный
способ хранения настроек. Настроечный файл среды разработки и
для сборки один и тот же - меньше дублирования данных и соответственно
ошибок.
![Page 18: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/18.jpg)
Maven
mvn archetype:generate
Выполнив эту команду maven покажет список шаблонов(архетипов) для разных проектов. Выберите проект и его версию по умолчанию, нажав Enter, Enter далее команда спросит, groupId и artifactId введите данные:ru.apache_maventestproject1
![Page 19: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/19.jpg)
Maven
Чтобы скомпилировать, нужно перейти в директорию проекта testproject1 и набрать в консоли mvn compile.
![Page 20: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/20.jpg)
Maven
Если вы наберёте mvn package, в директории target будет создан jar файл testproject1-1.0-SNAPSHOT.jar
![Page 21: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/21.jpg)
Tomcat
Tomcat (в старых версиях — Catalina) — контейнер сервлетов с
открытым исходным кодом, разрабатываемый Apache Software
Foundation.
![Page 22: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/22.jpg)
Tomcat
Tomcat реализует спецификацию сервлетов и спецификацию
JavaServer Pages (JSP) и JavaServer Faces (JSF). Написан на языке Java.
![Page 23: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/23.jpg)
Tomcat
Tomcat позволяет запускать веб-приложения. Cодержит ряд программ для самоконфигурирования.Tomcat используется в качестве самостоятельного веб-сервера, в качестве сервера контента в сочетании с веб-сервером Apache HTTP Server.
![Page 24: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/24.jpg)
WildFly (JBoss)
WildFly (ранее JBoss Application Server или JBoss AS) — Java EE-сервер
приложений с открытым исходным кодом, разработанный одноимённой
компанией.
![Page 25: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/25.jpg)
WildFly (JBoss)
Достаточно хорошая реализация принципов Java EE делает WildFly
конкурентом для аналогичных проприетарных программных решений,
таких, как WebSphere или WebLogic.
![Page 26: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/26.jpg)
Spring
Spring Framework (или коротко Spring) — универсальный фреймворк с
открытым исходным кодом для Java-платформы.
![Page 27: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/27.jpg)
Hibernate
Hibernate — библиотека для языка программирования Java, предназначенная для решения задач объектно-реляционного отображения (object-relational mapping — ORM).
![Page 28: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/28.jpg)
Динамическое построение страниц
![Page 29: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/29.jpg)
Servlet
Web-сервер при получении http запроса запускает Java-машину, которая в свою очередь выполняет сервлет (байткод), а сервлет формирует и отдаёт данные клиенту.
![Page 30: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/30.jpg)
Servlet
Сервлеты – это модули, которые расширяют сервера, ориентированные на системы запрос-ответ, такие, как web-сервера Java. Например, сервлет может отвечать за получение данных в формате HTML и применение бизнес логики, используемой для обновления базы данных компании.
![Page 31: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/31.jpg)
Servlet
Сервлет одновременно может обрабатывать большое количество
запросов, а так же может синхронизировать их.
![Page 32: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/32.jpg)
Servlet
Сервлеты могут пересылать запросы другим серверам и сервлетам. Таким образом, сервлеты можно применять для балансирования нагрузки между несколькими серверами, которые отражают одинаковое содержание, а так же для распределения одного логического сервиса по нескольким серверам, в соответствии с типомпоставленной задачи или организационными границами.
![Page 33: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/33.jpg)
Задачи сервлета
Чтение явных данных, отправленных клиентским приложением (данные форм, полей)
Чтение неявных данных, отправленных клиентским приложением (к примеру, заголовки запросов)
Построение результата обработки полученных данных.
![Page 34: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/34.jpg)
Задачи сервлета
Отправка явных данных обратно в клиент (к примеру, HTML данные, которые будут отображены на странице).
Отправка неявных данных обратно в клиент (коды статусов, заголовки ответа).
![Page 35: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/35.jpg)
![Page 36: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/36.jpg)
Интерфейс сервлета
Центральной абстракцией API сервлета является интерфейс Servlet. Все сервлеты реализуют данный интерфейс напрямую, но более распространено расширение класса, реализующего его, как HttpServlet.
![Page 37: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/37.jpg)
Servlet
![Page 38: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/38.jpg)
Servlet
![Page 39: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/39.jpg)
Взаимодействие с клиентом
Принимая запрос от клиента, сервлет получает два объекта:ServletRequest, который инкапсулирует связь клиента с сервером.ServletResponse, который инкапсулирует обратную связь сервлета с клиентом.ServletRequest и ServletResponse – это интерфейсы, определённые пакетом javax.servlet.
![Page 40: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/40.jpg)
Интерфейс ServletRequest
Интерфейс ServletRequest даёт сервлету доступ к: именам параметров, переданных клиентом;протоколам (схемы), используемые клиентом;имена удалённого хоста, создавшего запрос и сервера который их получает.
![Page 41: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/41.jpg)
Интерфейс ServletRequest
Входному потоку ServletInputStream.
Сервлеты используют входной поток для получения данных от клиентов, которые используют протоколы приложений, такие как HTTP POST и методы PUT.
![Page 42: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/42.jpg)
Каркас сервлета
Действия, обычно выполняемые в модели запроса-ответ имеют четыре общих характеристики:Контроллер: Координация других компонентБизнес логика: Выполняет бизнес правила, например проверку правильности выполнения запроса.
![Page 43: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/43.jpg)
Каркас сервлета
Логика Данных: Обеспечивает доступ к необходимым базам данных, CORBA сервисам, EJBs или другим механизмам.Логика Вывода Результата: Показывает результат пользователю.
![Page 44: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/44.jpg)
Жизненный цикл сервлета
![Page 45: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/45.jpg)
Жизненный цикл сервлета
1.В случае отсутствия сервлета в контейнере.1. Класс сервлета загружается
контейнером.2. Контейнер создает экземпляр
класса сервлета.3. Контейнер вызывает метод init().
![Page 46: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/46.jpg)
Жизненный цикл сервлета
Обслуживание клиентского запроса.Каждый запрос обрабатывается в своем отдельном потоке. Контейнер вызывает метод service() для каждого запроса. Этот метод определяет тип пришедшего запроса и распределяет его в соответствующий этому типу метод для обработки запроса.
![Page 47: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/47.jpg)
Жизненный цикл сервлета
В случае если контейнеру необходимо удалить сервлет, он вызывает метод destroy(), который снимает сервлет из эксплуатации. Подобно методу init(), этот метод тоже вызывается единожды за весь цикл сервлета.
![Page 48: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/48.jpg)
web.xml
Java веб-приложения используют файл дескриптора развертывания для определения какие URL будут передаваться определенному сервлету, какие URL требуют аутентификации и др. Этот дескриптор развертывания называется web.xml и находится в WAR приложения в WEB-INF/ директории.
![Page 49: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/49.jpg)
Дескриптор развертывания
Дескриптор развертывания веб-приложений описывает классы, ресурсы и конфигурацию приложения, а так же как сервер будет использовать их для выполнения веб-запросов.
![Page 50: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/50.jpg)
Дескриптор развертывания
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"> <servlet> <servlet-name>main</servlet-name> <servlet-class>ua.step.MainServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>main</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping></web-app>
![Page 51: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/51.jpg)
Каркас сервлетаБраузер1
Браузер2
Web - контейнер Сервлет
![Page 52: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/52.jpg)
Servlet
![Page 53: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/53.jpg)
javax.servlet.http.HttpServlet
•HttpServlet определяет сервлет для протокола HTTP. •HttpServlet определяет схему для Http сервлетов и делает написание сервлетов проще. •HttpServlet наследуется от GenericServlet и, поэтому наследует все свойства GenericServlet.
![Page 54: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/54.jpg)
HttpServletRequest
При каждом вызове методы doGet и doPost класса HttpServlet принимают в качестве параметра объект, который реализует интерфейс HttpServletRequest. Web-сервер, создает объект HttpServletRequest и передает его методу service сервлета (который в свою очередь передает его методу doGet или doPost).
![Page 55: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/55.jpg)
HttpServletRequest
Данный объект содержит запрос, поступивший от клиента.
String getParameter(String name) - Получение из запроса значения параметра. Наименование параметра определено значением name.
![Page 56: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/56.jpg)
HttpServletRequest
Enumeration getParameterNames() - Получение из запроса имен всех параметров.
String[ ] getParameterValues(String name)Для параметра с несколькими значениями данный метод возвращает строковый массив.
![Page 57: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/57.jpg)
HttpServletRequest
Cookie[ ] getCookies () - Получение массива объектов Cookie, сохраненных на компьютере клиента. Cookie могут быть использованы для уникальной идентификации клиента сервером.
![Page 58: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/58.jpg)
Cookie
Cookie - это некие данные, хранящиеся в браузере клиента. С программной точки зрения, cookie - это просто несколько пар «название - значение», которые используются при обращении браузера к определенному серверу. Этот механизм позволяет на протяжении нескольких HTTP запросов сохранять на браузере ту или иную информацию, полученную от сервера.
![Page 59: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/59.jpg)
HttpServletRequest
HttpSession getSession(boolean create) - Возвращает объект HttpSession текущего сеанса клиента. Если параметр create равен true и объект HttpSession не существует, то создается новый объект HttpSession.
![Page 60: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/60.jpg)
Сеанс (сессия)
Сеанс (сессия) – соединение между клиентом и сервером, устанавливаемое на определенное время, за которое клиент может отправить на сервер сколько угодно запросов. Сеанс устанавливается непосредственно между клиентом и Web-сервером. Каждый клиент устанавливает с сервером свой собственный сеанс.
![Page 61: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/61.jpg)
Сеанс (сессия)
Сеансы используются для обеспечения хранения данных во время нескольких запросов Web-страницы или на обработку информации, введенной в пользовательскую форму в результате нескольких HTTP-соединений.<session-config><session-timeout>30</session-timeout></session-config>
![Page 62: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/62.jpg)
Сеанс (сессия)
Чтобы сохранить значения переменной в текущем сеансе, используется метод setAttribute() класса HttpSession, прочесть – getAttribute(), удалить – removeAttribute().
Метод String getId() возвращает уникальный идентификатор, который получает каждый сеанс при создании.
![Page 63: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/63.jpg)
Сеанс (сессия)
Завершить сеанс можно методом invalidate(). Сеанс уничтожает все связи с объектами, и данные, сохраненные в старом сеансе, будут потеряны для всех приложений.
![Page 64: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/64.jpg)
HttpServletResponse
Объект HttpServletResponse описывает ответ клиенту.
void addCookie (Cookie cookie) - Метод используется для добавления Cookie в заголовок ответа клиенту Установленный максимальный возврат Cookie, а также разрешение клиентом хранения Cookie определяют, будут ли Cookies сохранены на клиенте и время их хранения.
![Page 65: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/65.jpg)
HttpServletResponse
ServletOutputStream getOutputStream() - Получение бинарного потока вывода для отправления бинарных данных клиенту.
PrintWriter getWriter() - Получение символьного потока вывода для отправления текстовых данных клиенту.
![Page 66: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/66.jpg)
HttpServletResponse
void setContentType(String type) - Определение MIME-типа ответа браузеру. MIME-тип помогает браузеру определить, как отображать данные. Например, MIME-тип "text/html" указывает, что ответ является HTML документом, поэтому браузер отображает HTML-страницу.
![Page 67: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/67.jpg)
Сервлетные фильтры
Cервлетный фильтр, в соответствии со спецификацией, это Java-код, пригодный для повторного использования и позволяющий преобразовать содержание HTTP - запросов, HTTP - ответов и информацию, содержащуюся в заголовках HTML.
![Page 68: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/68.jpg)
Сервлетные фильтры
Сервлетный фильтр предназначен для предварительной обработкой запроса, прежде чем тот попадает в сервлет, и/или последующей обработкой ответа, исходящего из сервлета.
![Page 69: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/69.jpg)
Сервлетные фильтры
Сервлетный фильтр может быть сконфигурирован так, что он будет работать с одним сервлетом или группой сервлетов. Основой для формирования фильтров служит интерфейс javax.servlet.Filter
![Page 70: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/70.jpg)
Использование дополнительных ресурсов
В отдельных случаях недостаточно вставить в сервлет фильтр или даже цепочку фильтров, а необходимо обратиться к другому сервлету, странице JSP, документу HTML, XML или другому ресурсу.
![Page 71: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/71.jpg)
Использование дополнительных ресурсов
Если требуемый ресурс находится в том же контексте, что и сервлет, который его вызывает, то для получения ресурса необходимо использовать метод
public RequestDispatcher getRequestDispatcher(String path);
path - это путь к ресурсу относительно контекста.
![Page 72: Сервлеты](https://reader035.vdocuments.site/reader035/viewer/2022070518/58e49d2a1a28abf5428b566d/html5/thumbnails/72.jpg)
Использование дополнительных ресурсов
Пример:RequestDispatcher rd = request.getRequestDispatcher("Connect");
if (rd != null) rd.forward (request, response); else response.sendError(HttpServletResponse.SC_NO_CONTENT);