36
Курс по Java, 2016 Web TCP/IP, HTTP, HTML, ...

Курс Java-2016. Занятие 09. Web

  • Upload
    7bits

  • View
    228

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

WebTCP/IP, HTTP, HTML, ...

Page 2: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Internet и WebInternet

● ARPANET● 1970-e — -1980-e● TCP/IP● E-mail, FTP, IRC…

Web (World Wide Web)

● CERN (Tim Berners-Lee)● 1989● HTTP● HTML (hypertext)

Page 3: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Иерархическая адресация, стек TCP/IP● У каждого узла есть IP-адрес● У сайтов — доменные имена● DNS (Domain Name System) — иерархическая структура серверов

Page 4: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

IPv4, IPv6

Page 5: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Domain Name System

Page 6: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Архитектура клиент-сервер

Page 7: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Архитектура клиент-сервер

Page 8: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Стек TCP/IP

Page 9: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Page 10: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Page 11: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Протокол HTTPHTTP (HyperText Transfer Protocol) — протокол передачи гипертекста

● Работает поверх TCP/IP● Адрес узла — URL● Не сохраняет промежуточное состояние

https://ru.wikipedia.org/wiki/HTTP

Page 12: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

URL и URIURL — Uniform Resource Locator — адреса в HTTP

URI — Uniform Resource Identifier — прочие идентификаторы в Internet

Page 13: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

URL и URIURL — Uniform Resource LocatorURI — Uniform Resource Identifier

Page 14: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Структура протокола HTTPКаждый HTTP-запрос состоит из трёх частей:

1. Тип запроса, протокол, URI, параметры2. Заголовки3. Тело запроса

Page 15: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Структура протокола HTTPЗапрос клиента

GET /news/recent HTTP/1.1Host: www.example.com

Page 16: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

HTTP-методы● GET● POST● PUT● DELETE

…и остальные

Page 17: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Коды состояния HTTPКод состояния = код ответа + поясняющая фраза

200 OK404 Not Found

Список кодов состояния HTTP

Page 18: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Заголовки HTTPЗаголовки HTTP (HTTP Headers) — это строки в HTTP-сообщении, содержащие разделённую двоеточием пару имя-значение.

http://ru.wikipedia.org/wiki/Заголовки_HTTP

Page 19: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Примеры HTTP заголовков● General Headers

○ Cache-Control○ Date

● Request Headers○ Referer○ User Agent

● Response Headers○ Age○ ETag

● Entity Headers○ Content-Type○ Content-Language

○ Content-Encoding

Page 20: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Заголовки HTTPПример запроса:

GET /wiki/страница HTTP/1.1Host: ru.wikipedia.orgUser-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5Accept: text/htmlConnection: close(пустая строка)

Page 21: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Заголовки HTTPПример ответа:

HTTP/1.1 200 OKDate: Wed, 11 Feb 2009 11:20:59 GMTServer: ApacheX-Powered-By: PHP/5.2.4-2ubuntu5wm1Last-Modified: Wed, 11 Feb 2009 11:20:59 GMTContent-Language: ruContent-Type: text/html; charset=utf-8Content-Length: 1234Connection: close(пустая строка)

Page 22: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Cookie — небольшой фрагмент данных, отправленный сервером и хранимый на компьютере пользователя.

Сессия — набор данных на сервере, связанный с сеансом пользователя.

Идентификатор сессии хранится в cookie.

Cookie и сессии

Page 23: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Инструменты разработчика

Page 24: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

СервераВеб-сервер (HTTP-сервер) — это сервер, принимающий HTTP запросы от клиентов, и выдающий им HTTP-ответы (веб-страницы в HTML, изображения, файлы)

Page 25: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

HTTP-сервера:

● Apache● Nginx● Lighttpd● Microsoft IIS

Сервера

Page 26: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Сервера приложений:

● Apache Tomcat (Java)● Phusion Passenger (Ruby, Python, Node.js)● Unicorn, thin (Ruby)● gUnicorn, uWSGI (Python)

Сервера

Page 27: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

● HTML 4.0 (1999)● XHTML 1.x (2001-2008)● XHTML 2● HTML 5.x

Языки разметки

Page 28: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

<!DOCTYPE html><html> <head> <meta charset=“UTF-8”> <title>HTML 5 demo</title> </head> <body> Пример страницы </body></html>

Пример страницы

Page 29: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

aabbr

form

h1, h2, h3, h4, h5, h6

p

iframe

img

strong, small, i

ul, li table, thead, tbody

title

div

Тэги HTML

Page 30: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

CSS - каскадные таблицы стилей.Используется для задания:

● цветов, шрифтов элементов● теней, фона● расположение блоков, отступов, границ● анимации

CSS

Page 31: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

DOM — представление структуры HTML документа в иерархическом виде.

DOM, обработка элементов

Page 32: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Примеры CSS селекторов:p { color: red; }#container { width: 1200px; }a.hidden { display: none; }header p { color: red; }.main .news { color: red; }

DOM, обработка элементов

Page 33: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

AJAX

Page 34: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

WebSocket

Page 35: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

HTTP клиент в JavaURL url = new URL("http://example.com");URLConnection connection = url.openConnection();try (InputStream in = connection.getInputStream()) { int b; while ((b = in.read()) >= 0) { System.out.write(b); }}

Page 36: Курс Java-2016. Занятие 09. Web

Курс по Java, 2016

Домашнее заданиеСкачивать с GitHub код по HTTP (raw) и форматировать его.

[email protected] [email protected]