Э. Таненбаум - Компьютерные сети. (4-е издание) (DJVU) (1130092), страница 197
Текст из файла (страница 197)
7.16. Показаны шаги, выполняемые в каждом случае. В обоих случаях все эти этапы производятся после вывода формы на экран. Шаг 1 состоит в приеме данных от пользователя. Затем слелует их обработка, и вот здесь имеются значительные различия. Брауввр Сврввр Моду >РНР звчазсбр( а б рио. 7.
т В. РНР.окрнпт на сторона сервера (а); сценарий на дачавсбрт насторонв клиента(б) Эти различия вовсе не означают, что )ачаБсг)рс «лучше», чем РНР, Просто у них различные сферы применения. РНР (а с ним неявно и ) БР, и АЯР) приме- Всемирная паутина ((дМ/)д/) 7ЗЗ няется тогда, когда необходимо взаимодействовать с удаленной базой данных, ,)ачаЗсг(рс используют тогда, когда требуется взаимодействие с пользователем в пределах его компьютер«Разумеется, возможно (и довольно часто осуществля. ется) одновременное использование РНР и ЗачаЯсг(РС, хотя они и не могут, например, обрабатывать одно и то же событие (типа нажатия кнопки) или производить одно и то же действие.
)ачаЗсг(рс — это полноценный язык програмч.ирования, ничуть не слабее по возможностям, чем С или )ача. В нем есть понятия переменных, строк, массивов, объектов, функций и всех привычных управляющих структур. К тому же он обладает множеством полезных свойств, специфичных для веб-страниц, включая возможность управления окнами и фреймами, установки и получения соо)т(е, работы с формами и гиперссылками, Пример программы на )ачаЯсг(рС с рекурсивной функцией приведен в листинге 7.12. Листинг 7.12.
Программа на )ача8ст(р( дпя подсчета и вывода факториапов «ЬСи)> <Ьевб> <всг)рС 1апрцвде ")ачавсг1рС" Суре-"Сект/)ачавсг(рС"> тцпсстоп гевропве(секс тога) ( тцпсстоп гассоюа1(п) (1т (и О) гесцгп 1; е1ве гесцгп и * тассог1а1(п - 1),) чвг г ечв1(СевС Соса.пцабег.ча1це); //г-введенный артунент босциепт.щутогвкаутехс.ча1це - 7результаты:(и; тог (чвг 1 - 1;1<-г;1++)//Вывестн одну строку от 1 до г Оосциепс.вутоги.иутехс.ча1це + (т + ") "+тассог1а1(т) + "тп"); ) </всг1рС> </Ьевб> <бобу> <Гога паве-"вутоги"> Введите число: <1прцс Суре-"сехС" пвие-"пциЬег > <1прцС Суре "Ьц(Соп" ча1це-"Подсчет таблицы факторналов опс11ск-"гевропве(сп1в.тоги) > <р> <сехсвгеа паве- аусехс" гоне-С25" со1в- 50"> </сехсагеа> </тоги> </Ьобу> </ЬСи)> С помощью )ачаЯсг(рс можно также отслеживать появление мыши нзд определенными объектами на странице.
На многих веб-страницах с )ачаЯсг(рС можно заметить, что при наведении курсора мыши на какой-нибудь текст или изображение что-нибудь происходит. Часто при этом меняется изображение или вдруг выскакивает меню. Такое поведение легко программируется на )ачаЯсг(рС и несколько оживляет веб-страницы. Пример приведен в листинге 7ПЗ. Листинг 7. 13. Интерактивная страница, отвечающая на движения мышью <ЬСв1> аеас> <всгтрС 1апдцвде-"Звчввсгтрс СурЕ-"Секс/Двчавсг1рС"> 734 Глава 7, Прикладной уровень (г(!оосовепс.щуог1) оосовепс.вуог) пен Аггау(); Посовепс,вуог1[0) "''ПССр;//ннн,сз.чо.п1/азС/)в/С1ССеп,)рд": оосовепс,щуог1[1] -"ПССр.//ннн.сз.чо,п1/азс/1В/риРРу,)рр"; Сосопвпс.вуог1[0) -"ПССр://ннн.сз.чо.п1/азС/1в/Ьиппу, )рр", ГопсС1оп рор(в) ( чаг игк-"ПССр.//ннн.сз.чо.п1/азС/1в/саС.)рр": рориркип н1псон.орел(сосивепс,щуог1[в3,"вун)пс","чдоСП 250.Пе)0ПС"250"); ) </зсг1рС> </аеас> Попу> <р а Пге[ "(г" опиоозеочег-"рор(0); гесогп Га1зе; > Котенок </а /р> <р><а Пге/- Ф" опиоизеочег рор(1): гесогп Га1зе;"> Щенок </а></р> <р «а Пге/-"(/" опМоизеочег-"рор(2): гесчгп /а1зе:"> Кропнк </а></р> </Песу> </ПСв)> )ачаЯсг)рС вЂ” это не единственный инструмент для создания веб-страниц с высокой степенью интерактивностн.
Еще один метод связан с использованием апплетов. Это небольшие программы на )ача, скомпилированные в машинные инструкции виртуального компьютера, называемого ) ч'М [)ача Игспа1 Масп1пе— виртуальная машина )ача). Апплеты могут внедряться в НТМЕ-страницы (между тегами <арр1еС> и </арр1еС>) и интерпретироваться ) "ч'М-совместимыми браузерами. Поскольку перед выполнением ) ача-апплеты проходят стадию интерпретации, интерпретатор может помочь избежать выполнения <нехороших действий».
По крайней мере, теоретически такая возможность существует. На практике создатели апплетов обнаружили почти бесконечный поток ошибок в библиотеках ввода-вывода ~ ача. Ответ корпорации М1сгозо[с на )ача-апллеты фирмы бцп состоял в подключении к веб-страницам управляющих элементов Асс(чеХ вЂ” программ, скомпилированных для машинного языка процессора Репс(п и и выполняемых на аппаратном уровне. Это свойство делает их значительно более быстрыми и гибкими, нежели интерпретируемые )ача-апплеты, поскольку они могут делать все то же самое, что и обычная программа. Когда 1пгегпес Ехр1огег видит на странице управляющий элемент Асс1чеХ, он загружает его, идентифицирует и исполняет.
Однако загрузка инородных программ может породить проблемы защиты информации, к которым мы обратимся в главе 8. Поскольку почти все браузеры могут интерпретировать программы как на)ача, так и на)ачаБсг[рс, разработчик, желающий создать страницу с высокой степенью интерактивности, может выбирать по крайней мере из двух этих технологий. А если вопрос платформонезависимости значения для него не имеет, то к ним добавляется еще и Асс[чеХ. Общее правило таков ш + ЗачаЯсг(рС обеспечивает простоту программирования. + ) ача-апплеты обеспечивают быстроту выполнения. + Управляющие элементы Асс(чеХ обгоняют по скорости выполнения все остальные технологии. Всемирная паутина (тутттт) 786 Во всех браузерах реализована строго одна и та же версия !'тгМ, а вот найти два браузера с одинаковой реализацией )ачаБсг!рс почти невозможно.
Поэтому ,)ача-апплеты легче переносятся с платформы на платформу, чем )ачаБсг!рс, Существует множество увесистых (часто более 1000 страниц) книг, посвященных ДачаБсг!рС. Вот некоторые из них (ЕазССощ, 2001; Нагие, 2001; МсРедг!ез, 2001). Прежде чем закончить тему динамических веб-страниц, подведем краткие итоги изученного. Целые веб-страницы могут создаваться ена лету» с помощью разнообразных скриптов, работающих на сервере. С точки зрения получающего их браузера, это обычные НТМЕ-страницы, которые нужно просто вывести на экран.
Скрипты можно создавать посредством технологий Рег!, РНР, )ЯР или АЗР, как показано на рис, 7.17. Клиентская машина Серверная машина Интерпретатор ХЗ!. Интерпретатор ХМ! Интерпретатор нтм!. Интерпретатор Подклкмвемыа 4ачазст)р! модуль Рис. 7. ! 7. Рвалнчные способы создвння н вывода динамических стрвннц Генерация динамических страниц возможна н на стороне клиента. Веб-страницы можно писать на ХМ1 и затем конвертировать в НТМЦ задавая внешнее представление в ХБ).-файле. Программы на)ауаЯсг!рс могут производить любые вычисления. Наконец, подключаемые модули и вспомогательные приложения могут использоваться для отображения самых разнообразных форматов.
НТТР— протокол передачи гипертекста Стандартный протокол для передачи данных по Всемирной паутине — это НТТР (НурегТехс Тгапз(ег Ргососо1 — протокол передачи гипертекста). Он описывает сообщения, которыми могут обмениваться клиенты и серверы. Каждое взаимодействие состоит из одного АБСП-запроса, на который следует один ответ, напоминающий ответ стандарта КРС 822 М1МЕ.
Все клиенты и все серверы должны следовать этому протоколу. Он определен в КРС 2616. В этом разделе мы рассмотрим некоторые наиболее важные его свойства. Соединения Обычный способ взаимодействия браузера с сервером заключается в установке ТСР-соединения с портом 80 сервера, хотя формально эта процедура не является обязательной. Ценность использования ТСР— в том, что ни браузерам, ни серве- 736 Глава 7.
Прикладной уровень Методы Несмотря на то что НТТР был разработан специально для использования в вебтехнологиях, он был намеренно сделан более универсальным, чем это было необходимо, так как рассчитывался на будущее применение в объектно-ориентированных приложениях. По этой причине в дополнение к обычным запросам вебстраниц были разработаны специальные операции, называемые методами. Они обязаны своим существованием технологии ГОАР. Каждый запрос состоит из одной или нескольких строк АЯСП, причем первое слово является именем вызываемого метода. Встроенные методы перечислены в табл.
7.12. Помимо этих общих методов, у различных объектов могут быть также свои специфические методы. Имена методов чувствительны к регистру символов, то есть метод СЕТ существует, а яег — нет. таблица 7.12. Встроенные методы НТТР-запросов Метод Описание ОЕТ НЕАО РОТ РОЗТ ОЕьЕТЕ ТЙАСЕ СОММЕСТ ОРПОМЗ Запрос чтения ввб-страницы Запрос чтения заголовка веб-страницы Запрос сохранения веб-страницы Добавить к именованному ресурсу(например, к ввб-странице) Удалить ввб-страницу Отобразить входящий запрос Зарезервирован для будущего использования Опрос определенных параметров Метод СЕТ запрашивает у сервера страницу (под которой в общем случае подразумевается объект, но на практике это обычно просто файл), закодирован- рам не приходится беспокоиться о потерянных, дублированных, слишком длинных сообщения и подтверждениях.
Все это обеспечивается протоколом ТСР. В НТТР 1.0 после установки соединения посылался один запрос, на который приходил один ответ. После этого ТСР-соединение разрывалось, В то время типичная веб-страница целиком состояла из НТМ|-текста, и такой способ взаимодействия был адекватным. Однако прошло несколько лет, и в странице оказалось множество значков, изображений и других украшений. Очевидно, что установка ТСР-соединения для передачи одного значка нерациональна и слишком дорога.
Это соображение привело к созданию протокола НТТР 1.1, который поддерживал устойчивые соединения. Это означало, что появилась возможность установки ТСР-соединения, отправки запроса, получения ответа, а затем передачи и приема дополнительных запросов и ответов. Таким образом, снизились накладные расходы, возникавшие при постоянных установках и разрывах соединения, Стало возможным также конвейеризировать запросы, то есть отправлять запрос 2 еще до прибытия ответа на запрос 1.
Всемирная паутина (УУУУУУ) 7В7 ную согласно стандарту М1МЕ. Большую часть запросов к серверу составляют именно запросы СЕТ. Вот самая типичная форма СЕТ. 6ЕТ т11епаае НТТРI1.1, где г1!епаее указывает на запрашиваемый ресурс (файл), а 1.1 — на используемую версию протокола. Метод НЕ41) просто запрашивает заголовок сообщения, без самой страницы. С помощью этого метода можно узнать время последнего изменения страницы для сбора индексной информации или просто для проверки работоспособности данного (121 Метод Р()Т является противоположностью метода СЕТ: он не читает, а записывает страницу.