SlideShare a Scribd company logo
1 of 72
Разработка серверного
программного обеспечения
Servlet. Создание
динамического
приложения.
Серверное решение
Операционная система и/или
пакеты программ
оптимизированная под выполнение
компьютером функций сервера
и/или содержащие в своём составе
комплект программ для реализации
типичного набора сервисов.
Веб-приложение
Клиент-серверное приложение, в
котором клиентом выступает браузер, а
сервером — веб-сервер.
Логика веб-приложения распределена
между сервером и клиентом, хранение
данных осуществляется,
преимущественно, на сервере, обмен
информацией происходит по сети.
Веб-приложение
Одним из преимуществ такого
подхода является тот факт, что
клиенты не зависят от конкретной
операционной системы
пользователя, поэтому веб-
приложения являются кросс
платформенными сервисами.
Клиент
Клиентская часть приложения
выполняется на компьютере
пользователя приложения.
Как правило она не содержит
бизнес-логики, а способна только
посылать запросы и отображать
результат присланный сервером.
Сервер
Серверная часть содержит
данные необходимые для
выполнения запросов от
клиента, систему обработки
входящих и исходящих
запросов, бизнес-логику
приложения и другие сервисы.
Клиент
Программы и утилиты для
сетевого программирования
Ant
Apache Ant (англ. ant — муравей и
акроним — «Another Neat Tool») —
утилита для автоматизации
процесса сборки программного
продукта.
Maven
Apache Maven — фреймворк для
автоматизации сборки проектов на
основе описания их структуры в
файлах на языке POM (англ. Project
Object Model), являющемся
подмножеством XML.
Maven
Maven обеспечивает
декларативную, а не императивную
(в отличие Ant) сборку проекта.
В файлах описания проекта
содержится его спецификация, а не
отдельные команды выполнения.
Maven
Все задачи по обработке файлов,
описанные в спецификации, Maven
выполняет посредством их обработки
последовательностью встроенных и
внешних плагинов.
Maven используется для построения и
управления проектами, написанными на
Java, C#, Ruby, Scala, и других языках
Основные преимущества Maven
Независимость от OS.
Сборка проекта происходит в
любой операционной системе.
Файл проекта один и тот же.
Основные преимущества Maven
Управление зависимостями.
Редко какие проекты пишутся без
использования сторонних
библиотек(зависимостей).
Maven позволяет управлять такими
сложными зависимостями.
Что позволяет разрешать конфликты
версий и в случае необходимости легко
переходить на новые версии библиотек.
Основные преимущества Maven
Возможна сборка из командной
строки.
Такое часто необходимо для
автоматической сборки проекта на
сервере (Continuous Integration).
Основные преимущества Maven
Хорошая интеграция со средами
разработки.
Основные среды разработки на java
легко открывают проекты которые
собираются c помощью maven. При
этом зачастую проект настраивать не
нужно - он сразу готов к дальнейшей
разработке.
Основные преимущества Maven
Декларативное описание проекта.
Если с проектом работают в разных
средах разработки, то maven удобный
способ хранения настроек.
Настроечный файл среды разработки и
для сборки один и тот же - меньше
дублирования данных и соответственно
ошибок.
Maven
mvn archetype:generate
Выполнив эту команду maven покажет список
шаблонов(архетипов) для разных проектов.
Выберите проект и его версию по умолчанию,
нажав Enter, Enter далее команда спросит,
groupId и artifactId введите данные:
ru.apache_maven
testproject1
Maven
Чтобы скомпилировать, нужно перейти
в директорию проекта testproject1 и
набрать в консоли mvn compile.
Maven
Если вы наберёте mvn package, в
директории target будет создан jar файл
testproject1-1.0-SNAPSHOT.jar
Tomcat
Tomcat (в старых версиях —
Catalina) — контейнер сервлетов с
открытым исходным кодом,
разрабатываемый Apache Software
Foundation.
Tomcat
Tomcat реализует спецификацию
сервлетов и спецификацию
JavaServer Pages (JSP) и
JavaServer Faces (JSF).
Написан на языке Java.
Tomcat
Tomcat позволяет запускать веб-
приложения. Cодержит ряд программ
для самоконфигурирования.
Tomcat используется в качестве
самостоятельного веб-сервера, в
качестве сервера контента в сочетании
с веб-сервером Apache HTTP Server.
WildFly (JBoss)
WildFly (ранее JBoss Application Server
или JBoss AS) — Java EE-сервер
приложений с открытым исходным
кодом, разработанный одноимённой
компанией.
WildFly (JBoss)
Достаточно хорошая реализация
принципов Java EE делает WildFly
конкурентом для аналогичных
проприетарных программных решений,
таких, как WebSphere или WebLogic.
Spring
Spring Framework (или коротко Spring)
— универсальный фреймворк с
открытым исходным кодом для Java-
платформы.
Hibernate
Hibernate — библиотека для языка
программирования Java,
предназначенная для решения задач
объектно-реляционного отображения
(object-relational mapping — ORM).
Динамическое построение
страниц
Servlet
Web-сервер при получении http запроса
запускает Java-машину, которая в свою
очередь выполняет сервлет (байткод),
а сервлет формирует и отдаёт данные
клиенту.
Servlet
Сервлеты – это модули, которые
расширяют сервера, ориентированные
на системы запрос-ответ, такие, как
web-сервера Java.
Например, сервлет может отвечать за
получение данных в формате HTML и
применение бизнес логики,
используемой для обновления базы
данных компании.
Servlet
Сервлет одновременно может
обрабатывать большое количество
запросов, а так же может
синхронизировать их.
Servlet
Сервлеты могут пересылать запросы другим
серверам и сервлетам. Таким образом,
сервлеты можно применять для
балансирования нагрузки между несколькими
серверами, которые отражают одинаковое
содержание, а так же для распределения
одного логического сервиса по нескольким
серверам, в соответствии с типом
поставленной задачи или организационными
границами.
Задачи сервлета
Чтение явных данных, отправленных
клиентским приложением (данные
форм, полей)
Чтение неявных данных,
отправленных клиентским
приложением (к примеру, заголовки
запросов)
Построение результата обработки
полученных данных.
Задачи сервлета
Отправка явных данных обратно в
клиент (к примеру, HTML данные,
которые будут отображены на
странице).
Отправка неявных данных обратно в
клиент (коды статусов, заголовки
ответа).
Интерфейс сервлета
Центральной абстракцией API сервлета
является интерфейс Servlet.
Все сервлеты реализуют данный
интерфейс напрямую, но более
распространено расширение класса,
реализующего его, как HttpServlet.
Servlet
Servlet
Взаимодействие с клиентом
Принимая запрос от клиента, сервлет
получает два объекта:
ServletRequest, который инкапсулирует
связь клиента с сервером.
ServletResponse, который
инкапсулирует обратную связь
сервлета с клиентом.
ServletRequest и ServletResponse – это
интерфейсы, определённые пакетом
javax.servlet.
Интерфейс ServletRequest
Интерфейс ServletRequest даёт
сервлету доступ к:
именам параметров, переданных
клиентом;
протоколам (схемы), используемые
клиентом;
имена удалённого хоста, создавшего
запрос и сервера который их получает.
Интерфейс ServletRequest
Входному потоку ServletInputStream.
Сервлеты используют входной поток
для получения данных от клиентов,
которые используют протоколы
приложений, такие как HTTP POST и
методы PUT.
Каркас сервлета
Действия, обычно выполняемые в
модели запроса-ответ имеют четыре
общих характеристики:
Контроллер: Координация других
компонент
Бизнес логика: Выполняет бизнес
правила, например проверку
правильности выполнения запроса.
Каркас сервлета
Логика Данных: Обеспечивает доступ к
необходимым базам данных, CORBA
сервисам, EJBs или другим
механизмам.
Логика Вывода Результата:
Показывает результат пользователю.
Жизненный цикл сервлета
Жизненный цикл сервлета
1.В случае отсутствия сервлета в
контейнере.
1. Класс сервлета загружается
контейнером.
2. Контейнер создает экземпляр
класса сервлета.
3. Контейнер вызывает метод init().
Жизненный цикл сервлета
Обслуживание клиентского запроса.
Каждый запрос обрабатывается в
своем отдельном потоке. Контейнер
вызывает метод service() для каждого
запроса. Этот метод определяет тип
пришедшего запроса и распределяет
его в соответствующий этому типу
метод для обработки запроса.
Жизненный цикл сервлета
В случае если контейнеру необходимо
удалить сервлет, он вызывает метод
destroy(), который снимает сервлет из
эксплуатации. Подобно методу init(),
этот метод тоже вызывается единожды
за весь цикл сервлета.
web.xml
Java веб-приложения используют файл
дескриптора развертывания для
определения какие URL будут
передаваться определенному сервлету,
какие URL требуют аутентификации и
др. Этот дескриптор развертывания
называется web.xml и находится в WAR
приложения в WEB-INF/ директории.
Дескриптор развертывания
Дескриптор развертывания веб-
приложений описывает классы, ресурсы
и конфигурацию приложения, а так же
как сервер будет использовать их для
выполнения веб-запросов.
Дескриптор развертывания
<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>
Каркас сервлета
Браузер
1
Браузер
2
Web - контейнер Сервлет
Servlet
javax.servlet.http.HttpServlet
•HttpServlet определяет сервлет для
протокола HTTP.
•HttpServlet определяет схему для Http
сервлетов и делает написание сервлетов
проще.
•HttpServlet наследуется от GenericServlet
и, поэтому наследует все свойства
GenericServlet.
HttpServletRequest
При каждом вызове методы doGet и
doPost класса HttpServlet принимают в
качестве параметра объект, который
реализует интерфейс
HttpServletRequest. Web-сервер,
создает объект HttpServletRequest и
передает его методу service сервлета
(который в свою очередь передает его
методу doGet или doPost).
HttpServletRequest
Данный объект содержит запрос,
поступивший от клиента.
String getParameter(String name) -
Получение из запроса значения
параметра. Наименование параметра
определено значением name.
HttpServletRequest
Enumeration getParameterNames() -
Получение из запроса имен всех
параметров.
String[ ] getParameterValues(String
name)
Для параметра с несколькими
значениями данный метод возвращает
строковый массив.
HttpServletRequest
Cookie[ ] getCookies () - Получение
массива объектов Cookie, сохраненных
на компьютере клиента. Cookie могут
быть использованы для уникальной
идентификации клиента сервером.
Cookie
Cookie - это некие данные, хранящиеся в
браузере клиента. С программной точки
зрения, cookie - это просто несколько пар
«название - значение», которые
используются при обращении браузера к
определенному серверу. Этот механизм
позволяет на протяжении нескольких HTTP
запросов сохранять на браузере ту или иную
информацию, полученную от сервера.
HttpServletRequest
HttpSession getSession(boolean create) -
Возвращает объект HttpSession
текущего сеанса клиента. Если
параметр create равен true и объект
HttpSession не существует, то создается
новый объект HttpSession.
Сеанс (сессия)
Сеанс (сессия) – соединение между
клиентом и сервером, устанавливаемое
на определенное время, за которое
клиент может отправить на сервер
сколько угодно запросов. Сеанс
устанавливается непосредственно
между клиентом и Web-сервером.
Каждый клиент устанавливает с
сервером свой собственный сеанс.
Сеанс (сессия)
Сеансы используются для обеспечения
хранения данных во время нескольких
запросов Web-страницы или на
обработку информации, введенной в
пользовательскую форму в результате
нескольких HTTP-соединений.
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Сеанс (сессия)
Чтобы сохранить значения переменной
в текущем сеансе, используется метод
setAttribute() класса HttpSession,
прочесть – getAttribute(),
удалить – removeAttribute().
Метод String getId() возвращает
уникальный идентификатор, который
получает каждый сеанс при создании.
Сеанс (сессия)
Завершить сеанс можно методом
invalidate().
Сеанс уничтожает все связи с
объектами, и данные, сохраненные в
старом сеансе, будут потеряны для
всех приложений.
HttpServletResponse
Объект HttpServletResponse описывает
ответ клиенту.
void addCookie (Cookie cookie) -
Метод используется для добавления
Cookie в заголовок ответа клиенту
Установленный максимальный возврат Cookie, а
также разрешение клиентом хранения Cookie
определяют, будут ли Cookies сохранены на
клиенте и время их хранения.
HttpServletResponse
ServletOutputStream getOutputStream()
- Получение бинарного потока вывода
для отправления бинарных данных
клиенту.
PrintWriter getWriter() - Получение
символьного потока вывода для
отправления текстовых данных клиенту.
HttpServletResponse
void setContentType(String type) -
Определение MIME-типа ответа
браузеру. MIME-тип помогает браузеру
определить, как отображать данные.
Например, MIME-тип "text/html"
указывает, что ответ является HTML
документом, поэтому браузер
отображает HTML-страницу.
Сервлетные фильтры
Cервлетный фильтр, в соответствии со
спецификацией, это Java-код,
пригодный для повторного
использования и позволяющий
преобразовать содержание HTTP -
запросов, HTTP - ответов и
информацию, содержащуюся в
заголовках HTML.
Сервлетные фильтры
Сервлетный фильтр предназначен для
предварительной обработкой запроса,
прежде чем тот попадает в сервлет,
и/или последующей обработкой ответа,
исходящего из сервлета.
Сервлетные фильтры
Сервлетный фильтр может быть
сконфигурирован так, что он будет
работать с одним сервлетом или
группой сервлетов. Основой для
формирования фильтров служит
интерфейс javax.servlet.Filter
Использование дополнительных
ресурсов
В отдельных случаях недостаточно
вставить в сервлет фильтр или даже
цепочку фильтров, а необходимо
обратиться к другому сервлету,
странице JSP, документу HTML, XML
или другому ресурсу.
Использование дополнительных
ресурсов
Если требуемый ресурс находится в
том же контексте, что и сервлет,
который его вызывает, то для
получения ресурса необходимо
использовать метод
public RequestDispatcher
getRequestDispatcher(String path);
path - это путь к ресурсу относительно контекста.
Использование дополнительных
ресурсов
Пример:
RequestDispatcher rd =
request.getRequestDispatcher("Connect");
if (rd != null)
rd.forward (request, response);
else
response.sendError(HttpServletResponse.
SC_NO_CONTENT);

More Related Content

What's hot

Ввведение в java
Ввведение в javaВвведение в java
Ввведение в javaUnguryan Vitaliy
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSPUnguryan Vitaliy
 
Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.Unguryan Vitaliy
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.Igor Shkulipa
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.Igor Shkulipa
 
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью. Unguryan Vitaliy
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версийUnguryan Vitaliy
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.Igor Shkulipa
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.Igor Shkulipa
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.Igor Shkulipa
 
Konstantin slisenko - Spring Framework
Konstantin slisenko - Spring FrameworkKonstantin slisenko - Spring Framework
Konstantin slisenko - Spring Frameworkbeloslab
 
Разработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkРазработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkCUSTIS
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.Igor Shkulipa
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Andrey Rebrov
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.Igor Shkulipa
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.Igor Shkulipa
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.Igor Shkulipa
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.Igor Shkulipa
 

What's hot (20)

Ввведение в java
Ввведение в javaВвведение в java
Ввведение в java
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
 
JDBC
JDBCJDBC
JDBC
 
Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.Java. Работа с файловой системой. Потоки ввода-вывода.
Java. Работа с файловой системой. Потоки ввода-вывода.
 
C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.C++ STL & Qt. Занятие 02.
C++ STL & Qt. Занятие 02.
 
C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.C++ STL & Qt. Занятие 05.
C++ STL & Qt. Занятие 05.
 
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью.
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
 
C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.C++ STL & Qt. Занятие 03.
C++ STL & Qt. Занятие 03.
 
C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.C++ STL & Qt. Занятие 01.
C++ STL & Qt. Занятие 01.
 
C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.C++ STL & Qt. Занятие 07.
C++ STL & Qt. Занятие 07.
 
Konstantin slisenko - Spring Framework
Konstantin slisenko - Spring FrameworkKonstantin slisenko - Spring Framework
Konstantin slisenko - Spring Framework
 
Разработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring FrameworkРазработка Enterprise-приложения на основе Spring Framework
Разработка Enterprise-приложения на основе Spring Framework
 
C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.C++ STL & Qt. Занятие 10.
C++ STL & Qt. Занятие 10.
 
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
Бодрящий микс из Selenium и TestNG- регрессионное тестирование руками разрабо...
 
C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.C++ STL & Qt. Занятие 08.
C++ STL & Qt. Занятие 08.
 
C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.C++ STL & Qt. Занятие 06.
C++ STL & Qt. Занятие 06.
 
Stream API
Stream APIStream API
Stream API
 
C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.C++ STL & Qt. Занятие 04.
C++ STL & Qt. Занятие 04.
 
C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.C++ STL & Qt. Занятие 11.
C++ STL & Qt. Занятие 11.
 

Similar to Сервлеты

Baseof servletsjava intro
Baseof servletsjava introBaseof servletsjava intro
Baseof servletsjava introalexey1991
 
Bloch, bodoff руководство. сервлеты
Bloch, bodoff   руководство. сервлетыBloch, bodoff   руководство. сервлеты
Bloch, bodoff руководство. сервлетыalexey1991
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCGetDev.NET
 
Azure - облачные сервисы и приложения
Azure - облачные сервисы и приложенияAzure - облачные сервисы и приложения
Azure - облачные сервисы и приложенияAlexander Babich
 
6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remotingKewpaN
 
7 создание веб сервисов
7 создание веб сервисов7 создание веб сервисов
7 создание веб сервисовKewpaN
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIEkaterina Kuchinskaya
 
МАИ, Сети ЭВМ, Лекция №4
МАИ, Сети ЭВМ, Лекция №4МАИ, Сети ЭВМ, Лекция №4
МАИ, Сети ЭВМ, Лекция №4Dima Dzuba
 
08-170327133157.pdf
08-170327133157.pdf08-170327133157.pdf
08-170327133157.pdfssuser0562f1
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоАлександр Ежов
 
Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Artur Baranok
 
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsКостянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsLEDC 2016
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"Fwdays
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...DevDay
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.Igor Shkulipa
 

Similar to Сервлеты (20)

Baseof servletsjava intro
Baseof servletsjava introBaseof servletsjava intro
Baseof servletsjava intro
 
Bloch, bodoff руководство. сервлеты
Bloch, bodoff   руководство. сервлетыBloch, bodoff   руководство. сервлеты
Bloch, bodoff руководство. сервлеты
 
servlets.pdf
servlets.pdfservlets.pdf
servlets.pdf
 
ASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVCASP.NET, MVC, ASP.NET MVC
ASP.NET, MVC, ASP.NET MVC
 
servlets1.pdf
servlets1.pdfservlets1.pdf
servlets1.pdf
 
Azure - облачные сервисы и приложения
Azure - облачные сервисы и приложенияAzure - облачные сервисы и приложения
Azure - облачные сервисы и приложения
 
6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting
 
7 создание веб сервисов
7 создание веб сервисов7 создание веб сервисов
7 создание веб сервисов
 
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet APIПротокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
 
МАИ, Сети ЭВМ, Лекция №4
МАИ, Сети ЭВМ, Лекция №4МАИ, Сети ЭВМ, Лекция №4
МАИ, Сети ЭВМ, Лекция №4
 
08-170327133157.pdf
08-170327133157.pdf08-170327133157.pdf
08-170327133157.pdf
 
FT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это простоFT & HA Rails приложений приложений — это просто
FT & HA Rails приложений приложений — это просто
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...Новые возможности развертывания и масштабирования open source приложений в Az...
Новые возможности развертывания и масштабирования open source приложений в Az...
 
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tipsКостянтин Чаус — Monitoring of huge Drupal site. Tools and tips
Костянтин Чаус — Monitoring of huge Drupal site. Tools and tips
 
Андрей Завадский "Бессерверная архитектура"
 Андрей Завадский "Бессерверная архитектура" Андрей Завадский "Бессерверная архитектура"
Андрей Завадский "Бессерверная архитектура"
 
ASP.NET MVC: new era?
ASP.NET MVC: new era?ASP.NET MVC: new era?
ASP.NET MVC: new era?
 
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...Платформа для автоматического тестирования Erlang проектов на примере UserGat...
Платформа для автоматического тестирования Erlang проектов на примере UserGat...
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
C# Web. Занятие 01.
C# Web. Занятие 01.C# Web. Занятие 01.
C# Web. Занятие 01.
 

More from Unguryan Vitaliy

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование. Unguryan Vitaliy
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVCUnguryan Vitaliy
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектамиUnguryan Vitaliy
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Unguryan Vitaliy
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoFUnguryan Vitaliy
 
Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в javaUnguryan Vitaliy
 
Аннотации в java
Аннотации в javaАннотации в java
Аннотации в javaUnguryan Vitaliy
 
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылокUnguryan Vitaliy
 
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьUnguryan Vitaliy
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Unguryan Vitaliy
 
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Unguryan Vitaliy
 

More from Unguryan Vitaliy (16)

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование.
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектами
 
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
 
JSTL
JSTLJSTL
JSTL
 
XML
XMLXML
XML
 
Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в java
 
Аннотации в java
Аннотации в javaАннотации в java
Аннотации в java
 
java 8
java 8java 8
java 8
 
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылок
 
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередь
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
 
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.
 
List - списки
List - списки List - списки
List - списки
 

Сервлеты

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