SlideShare a Scribd company logo
Серверные Java-
приложения
Клиент - сервер
Протокол HTTP
● HTTP (HyperText Transfer Protocol) – протокол
передачи гипертекста
● Работает поверх TCP/IP
● Адрес узла – URL
● Не сохраняет промежуточное состояние
https://ru.wikipedia.org/wiki/HTTP
Структура протокола HTTP
Каждый HTTP-запрос состоит из 3-х частей:
1. Стартовая строка: метод, URL, версия,
код состояния
2. Заголовки
3. Тело запроса
Структура протокола HTTP
Запрос клиента:
GET /news/recent HTTP/1.1
Host: www.example.com
Стартовая строка ответа сервера:
HTTP/1.0 200 OK
HTTP методы
● GET
● POST
● PUT
● DELETE
● …и остальные
Коды состояния HTTP
Код состояния = код ответа +
поясняющая фраза
200 – OK
404 – Not Found
Заголовки HTTP
Server: Apache/2.2.11 (Win32) PHP/5.3.0
Last-Modified: Sat, 16 Jan 2010 21:16:42 GMT
Content-Type: text/plain; charset=windows-1251
Content-Language: ru
Заголовки HTTP
Запрос клиента:
GET /wiki/страница HTTP/1.1
Host: ru.wikipedia.org
User-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5)
Gecko/2008050509 Firefox/3.0b5
Accept: text/html
Connection: close
(пустая строка)
Заголовки HTTP
Ответ сервера:
HTTP/1.1 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close
(пустая строка)
Cookie и сессии
Cookie – небольшой фрагмент данных,
отправленный сервером и хранимый на
компьютере пользователя.
Cookie и сессии
Сессия - механизм, позволяющий
однозначно идентифицировать браузер и
создающий для этого браузера файл на
сервере, в котором хранятся переменные
сеанса.
Java
Сервлеты
Предназначены для динамического
формирования содержимого ответа на
запрос клиента по сети. Выполняются в
специальной среде исполнения,
создаваемой контейнером сервлетов.
Контейнеры сервлетов
● Apache Tomcat
● Jetty
● JBoss
● GlassFish
● IBM WebSphere
Сервлеты
Общая функциональность, не зависит от
протокола.
Логика для HTTP
Логика для конкретного приложения
Жизненный цикл
Параметры методов
● javax.servlet.http.HttpServletRequest
request
● javax.servlet.http.HttpServletResponse
response
Регистрация сервлета
web.xml:
<servlet>
<servlet-name>FirstServlet</servlet-name>
<servlet-class>it.sevenbits.FirstServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
JSP
JSP (JavaServer Pages) — технология,
позволяющая веб-разработчикам создавать
содержимое, которое имеет как статические,
так и динамические компоненты.
Компиляция jsp
Jasper — механизм JSP Tomcat’а. Jasper
анализирует JSP-файлы, чтобы
компилировать их в Java код, как сервлеты
(которые могут быть обработаны с помощью
Catalina).
Элементы JSP
Комментарии :
● исходного кода JSP <%-- jsp --%>
● HTML-разметки. <!-- html -->
Элементы JSP
Скриптовые элементы
● Объявления <%! одна или несколько
деклараций %>
● Выражения <%= одно выражение %>
● Скриплеты <% скриплет %>
Объявления JSP
<%! private int accessCount = 0; %>
Количество обращений к странице с момента
загрузки сервера: <%= ++accessCount %>
Выражения JSP
Текущее время: <%= new java.util.Date() %>
Имя вашего хоста: <%= request.getRemoteHost()
%>
Скриплеты JSP
<% if (Math.random() < 0.5) { %>
<B>Удачного</B> вам дня!
<% } else { %>
<B>Неудачного</B> вам дня!
<% } %>
Скомпилированный:
if (Math.random() < 0.5) {
out.println("<B>Удачного</B> вам дня!");
} else {
out.println("<B>Неудачного</B> вам дня!");
}
Элементы JSP
Директивы:
● page
● include
● taglib
<%@ директива атрибут="значение" %>
Элементы JSP
Действия:
jsp:text — Вывод текста;
jsp:useBean — Поиск или создание нового экземпляра JavaBean;
jsp:setProperty — Установка свойств JavaBean;
jsp:getProperty — Вставить свойство JavaBean в поток вывода;
jsp:include — Подключает файл в момент запроса страницы;
jsp:forward — Перенаправляет запрос на другую страницу;
jsp:param — Добавляет параметры в объект запроса, например в
элементах forward, include, plugin.;
JSTL
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="myName" value="Alex"/>
<h1>${myName}</h1>
<c:if test="${10 > 9}">
<p>True<p>
</c:if>
<c:if test="${10 < 9}">
<p>False<p>
</c:if>
<c:forEach var="num" items="${list}">
<p>${num}</p>
</c:forEach>
Структура war
index.jsp
list.jsp
WEB-INF/
|----web.xml
|----lib/
| |----mysql-5.jar
| |----jstl-1.2.jar
|----classes/
| |----full.path/
| | |----Servlet.class
| | |----Repository.class
META-INF/
https://github.com/IvanIvashchenko/servlet
ivan.ivashchenko@7bits.it
skype: sin_error88

More Related Content

PDF
01 - Web-технологии. Архитектура Web приложений
PDF
17 - Web-технологии. Real Time сообщения
PDF
02 - Web-технологии. Web-клиенты
PDF
06 - Web-технологии. Протокол HTTP
PDF
07 - Web-технологии. Web-сервера
PPTX
Стажировка-2013, разработчики, занятие 7. Web, HTTP
PDF
08 - Web-технологии. Архитектура frontend-backend
PDF
15 - Web-технологии. Сессии и авторизация
01 - Web-технологии. Архитектура Web приложений
17 - Web-технологии. Real Time сообщения
02 - Web-технологии. Web-клиенты
06 - Web-технологии. Протокол HTTP
07 - Web-технологии. Web-сервера
Стажировка-2013, разработчики, занятие 7. Web, HTTP
08 - Web-технологии. Архитектура frontend-backend
15 - Web-технологии. Сессии и авторизация

What's hot (20)

PPTX
Особенности совместной работы Ruby и Oracle
PDF
09 - Web-технологии. MVC фреймворки
PDF
05 - Web-технологии. Сетевые протоколы
PDF
Курс Java-2016. Занятие 09. Web
PPTX
Lesson1
PDF
Perl и SPDY
PDF
Михаил Давыдов — Транспорт, Ajax
PPTX
Курс Java-2016. Занятие 13. Spring
PPTX
Roman Gorel: Building better APIs on Rails.
PDF
Building better APIs on rails
PPTX
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
PPTX
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
PPTX
Impress Application Server for node.js (ru)
PDF
HTTP протокол
PPTX
PDF
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
PDF
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
PDF
Компиляция скриптов PHP. Алексей Романенко
PPT
Особенности совместной работы Ruby и Oracle
09 - Web-технологии. MVC фреймворки
05 - Web-технологии. Сетевые протоколы
Курс Java-2016. Занятие 09. Web
Lesson1
Perl и SPDY
Михаил Давыдов — Транспорт, Ajax
Курс Java-2016. Занятие 13. Spring
Roman Gorel: Building better APIs on Rails.
Building better APIs on rails
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Быстрое развёртывание шаблонов и статики в Mail.ru, Николай Кондратов
Impress Application Server for node.js (ru)
HTTP протокол
2014.10.15 Мурат Кабилов, Avito.ru #PostgreSQLRussia
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
Компиляция скриптов PHP. Алексей Романенко
Ad

Similar to Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения (20)

PPTX
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
PPTX
Основы Java. 4. Web
PDF
Phalcon - самый быстрый PHP Framework
ODP
Nginx Igor Sysoev
PPTX
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
PPTX
Мировые информационные ресурсы. Лекция 3
PDF
Smirnov Twisted Python
PDF
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
PPTX
Стажировка-2014, занятие 6 (часть 1). Web-приложения
PDF
Web and mobile development for intersystems caché, Eduard Lebedyuk
PDF
servlets.pdf
PDF
JavaScript Базовый. Занятие 08.
PDF
Twisted Framework - сетевые приложения в Python
PDF
Twisted Framework - сетевые приложения в Python
PDF
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
PDF
Разработка мобильного и веб интерфейса для Caché
PPT
The Best Portlet
PPTX
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
PPT
Web sockets
PPT
Eugene Lisitsky Web Sockets
Спецкурс "Современные практики разработки ПО", 2013-2014 уч. год, занятие 6
Основы Java. 4. Web
Phalcon - самый быстрый PHP Framework
Nginx Igor Sysoev
Примеры быстрой разработки API на масштабируемом сервере приложений Impress д...
Мировые информационные ресурсы. Лекция 3
Smirnov Twisted Python
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Стажировка-2014, занятие 6 (часть 1). Web-приложения
Web and mobile development for intersystems caché, Eduard Lebedyuk
servlets.pdf
JavaScript Базовый. Занятие 08.
Twisted Framework - сетевые приложения в Python
Twisted Framework - сетевые приложения в Python
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Разработка мобильного и веб интерфейса для Caché
The Best Portlet
Протокол HTTP. Клиент-серверная модель взаимодействия. Servlet API
Web sockets
Eugene Lisitsky Web Sockets
Ad

More from 7bits (20)

PDF
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
PDF
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
PDF
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
PDF
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
PDF
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
PDF
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
PDF
Курс Java-2016. Занятие 12. DBMS, JDBC
PDF
Курс Java-2016. Занятие 11. Servlets, JSP
PDF
Курс Java-2016. Занятие 10. Reflection, mock
PDF
Курс Java-2016. Занятие 08. Итераторы, многопоточность
PDF
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
PDF
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
PPTX
Курс Java-2016. Занятие 05. Тестирование и Java
PDF
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
PDF
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
PPTX
курс Java 2016. занятие 03. интерфейсы, generic, исключения
PPTX
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
PPTX
Курс Java-2016. Занятие 01. Введение в Java как технологию
PPTX
Спецкурс-2015. Занятие 05. Системы контроля версий
PPTX
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...
Гудбай, ИТ-лофт! Тарасенко Анна: Стартап = факап?
Гудбай, ИТ-лофт! Денис Нелюбин: Новейшая история ИТ-лофта
Гудбай, ИТ-лофт! Лопатюк Саша: Договоримся не плакать
Гудбай, ИТ-лофт! Гончаровский Игорь: IT-Loft без связи
Гудбай, ИТ-лофт! Мячин Сергей: LUDUM DARE + IT-LOFT = LOVE
Goodbye, IT-loft! Тараканов Алексей: Идеология в IT
Курс Java-2016. Занятие 12. DBMS, JDBC
Курс Java-2016. Занятие 11. Servlets, JSP
Курс Java-2016. Занятие 10. Reflection, mock
Курс Java-2016. Занятие 08. Итераторы, многопоточность
Курс Java-2016. Занятие 07. Логи, фасады, библиотеки и коллекции
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 05. Тестирование и Java
Курс Java-2016. Занятие 04 (часть 2). Git и GitHub
Курс Java-2016. Занятие 04 (часть 1). Еще немного про Generics
курс Java 2016. занятие 03. интерфейсы, generic, исключения
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 01. Введение в Java как технологию
Спецкурс-2015. Занятие 05. Системы контроля версий
Спецкурс-2015. Занятие 04 (часть 2). Обработка исключительных ситуаций, запи...

Стажировка-2015. Разработка. Занятие 3. Серверные Java-приложения