1)Адресация в Интернет: ip-адреса и URL. IP. Для того, чтоб компьютеры в любой из сетей могли видеть друг друга, любой из них обладает адресом, который должен быть доступен другим машинам. Интернет не исключение и его можно определить как виртуальную сеть, созданную в результате соединения физических сетей шлюзами. Любая машина, находящаяся в сети, получает и использует некий адрес, однозначно ее определяющий: IP - адрес Каждый IP-адрес состоит из двух частей — идентификатора сети (network ID) и идентификатора узла (host ID). Первый определяет физическую сеть. Он одинаков для всех узлов в одной сети и уникален для каждой из сетей, включенных в объединённую сеть. Идентификатор узла соответствует конкретной рабочей станции, серверу, маршрутизатору или другому TCP/IP-узлу в данной сети. Он должен иметь уникальное значение в данной сети. Каждый узел TCP/IP однозначно определяется по своему логическому IP-адресу. Такой уникальный адрес необходим всем сетевым компонентам, взаимодействующим по TCP/IP. IP-адрес может быть записан в двух форматах — двоичном (binary) и десятичном с точками (dotted decimal). Каждый IP-адрес имеет длину 32 бита и состоит из четырёх 8-битных полей, называемых октетами (octets), которые отделяются друг от друга точками. Каждый октет представляет десятичное число в диапазоне от 0 до 255. Эти 32 разряда IP-адреса содержат идентификатор сети и узла. Классы ip адресов. Класс А Адреса класса А назначаются узлам очень большой сети. Старший бит в адресах этого класса всегда равен нулю. Следующие семь бит первого октета представляют идентификатор сети. Оставшиеся 24 бита (три октета) содержат идентификатор узла. Это позволяет иметь 126 сетей с числом узлов до 17 миллионов в каждой. Класс В Адреса класса В назначаются узлам в больших и средних по размеру сетях. В двух старших битах IP-адреса класса В записывается двоичное значение 10. Следующие 14 бит содержат идентификатор сети (два первых октета). Оставшиеся 16 бит (два октета) представляют идентификатор узла. Таким образом, возможно существование 16 384 сетей класса В, в каждой из которых около 65 000 узлов. Класс С Адреса класса С применяются в небольших сетях. Три старших бита IP-адреса этого класса содержат двоичное значение 110. Следующие 21 бит составляет идентификатор сети (первые три октета). Оставшиеся 8 бит (последний октет) отводится под идентификатор узла. Всего возможно около 2 000 000 сетей класса С, содержащих до 254 узлов. Класс D Адреса класса D предназначены для рассылки групповых сообщений. Группа получателей может содержать один, несколько или ни одного узла. Четыре старших бита в IP-адресе класса D всегда равны 1110. Оставшиеся биты обозначают конкретную группу получателей и не разделяются на части. Пакеты с такими адресами рассылаются избранной группе узлов в сети. Их получателями могут быть только специальным образом зарегистрированные узлы. Micorosoft поддерживает адреса класса D, применяемые приложениями для групповой рассылки сообщений, включая WINS и Microsoft NetShow™. Класс Е Класс Е — экспериментальный. Он зарезервирован для использования в будущем и в настоящее время не применяется. Четыре старших бита адресов класса Е равны 1111 URL. Адресом документа является так называемый URL (Uniform Resource Locator), включающий весь комплекс сведений, необходимый для его поиска и правильной интерпретации тем или иным броузером или WWW-навигатором -- программой, выполняющей роль комплекса, состоящего из "штурвала" и монитора, и используемой при "плавании" по просторам информационных источников мира. Наиболее популярны из них сегодня -- Netscape Navigator и Microsoft Internet Explorer ( http://www.relcom.ru/Services/Infoline/TechSupport/). Рассмотрим, напpимеp, адрес: http://www.relcom.ru/Internet/Literature/index.html Здесь: http (HyperText Transfer Protocol) Определяет протокол, то есть способ передачи документа. В данном случае, документ должен быть передан как гипертекстовый. Воможные варианты -- ftp, gopher и некоторые другие. www.relcom.ru Адрес сервера в уже знакомой нам формате. Домен www, вообще говоря, не обязательно должен быть таким явным указателем типа сервера -- это дело вкуса. Адрес сервера может быть приведен и в числовой форме. /www.relcom.ru/Internet/Literature/ Каталог или путь к искомому файлу в файловом аpхиве сеpвеpа. index.html Имя файла, включающее суффикс html (HyperText Marcup Language) -- указывающий (в данном случае) язык HTML, на котором подготовлен документ. Наиболее часто употребляемые значения суффикса -- html и htm. Для одного из файлов каждой диpектоpии (обычно с именем index.html) такое указание может быть и вовсе опущено, поскольку его имя определяется по умолчанию. 2.Язык HTML. Символы, теги, элементы, атрибуты. HTML (Hyper Text Markup Languare) дословно на русский язык переводится как язык разметки гипертекста. Данный язык является основным языком программирования при создании Web-страниц и применяется для размещения различных элементов страницы (теста, графики, таблиц и т.д) с помощью определенных команд. С помощью него можно создать несложные сайты без элементов продвинутой интерактивности. Язык HTML читается только браузерами и графическими HTML-редакторами. Ряд символов в языке HTML зарезервирован и должен представляться специальным образом: левая угловая скобка ("<") &lt; правая угловая скобка (">") &gt; амперсант ("&") &amp; двойная кавычка (") &quot; Команды языка HTML называются тегами. Полный набор таких команд в пределах всей страницы принято называть HTML-кодом. Название любого тэга состоит из одной или нескольких букв заключенных в угловые скобки. Теги делятся на открывающие <tag>, которые указывают на начало какого-либо действия на странице и закрывающие </tag>, который покажет место на странице, где завершит действие <tag>. Как видите символ "/ " обозначает "закрывание". В HTML-коде тег в основном показывает только способ изменения того или иного элемента страницы. Все параметры форматирования объектов несет в себе атрибут со своим значением. Атрибут указывает тегу характеристики форматирования элемента (это может быть и выравнивание - ALIGN, изменение цвета СOLOR и др.), а значение - нужный параметр для атрибута указывающий в числовом выражении или в виде конкретных английских слов. Атрибуты тэга в коде страницы пишутся через "пробел" в одних угловых скобках с ним, а значение атрибута заключены в кавычки и разделены между собой знаком равенства. Атрибуты могут указываться не все, а только по мере необходимости. При частом повторении одних и тех же параметров элементов на Web-странице целесообразней использовать каскадные листы стилей. Значение атрибута может быть заключено в одинарные или двойные кавычки. Кавычки можно опустить, если значение атрибута состоит только из латинских букв (A-Za-z), цифр (0-9), дефисов ("-"), подчеркиваний ("_"), двоеточий (":") и точек ("."). Имена атрибутов могут быть набраны в любом регистре, но их значения могут зависеть от регистра. Атрибут "align" один из самых распространенных и самых важных атрибутов в языке HTML. Он задает положение объекта к другому элементу или страницы в целом методом выравнивания между собой. Ширина и высота элемента указывается в процентах от величины расширения экрана или отношением к другому элементу (если он в него помещен) и в пикселях. 3.Структура html-документа. Структурные элементы страницы. Типы элементов. структурные элементы Обязательные элементы Любой html документ содержит заголовок и тело (HEAD и BODY, соответственно). Заголовок и тело документа - обязательные элементы, которые должны находиться внутри элемента HTML, как и все другие элементы. Итак, в заголовке документа содержится в основном служебная информация о самом документе, тогда как тело документа содержит непосредственно сам документ (текст, рисунки и прочие элементы). Название документа Название документа задаётся при помощи элемента TITLE. Это очень важный элемент. Он характеризует документ. Декларация DTD <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> Эта декларация позволяет использовать любые элементы и атрибуты языка HTML. Комментарии Комментарии используются чаще всего для пояснений. Комментарии в HTML имеют следующий синтаксис: <!-- текст комментария --> Простой пример html документа <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <HTML> <!--Далее идёт код заголовка документа --> <HEAD> <TITLE>Название документа</TITLE> Здесь будут располагаться элементы заголовка документа </HEAD> <!--Далее идёт код тела документа--> <BODY> Здесь будут располагаться элементы тела документа </BODY> </HTML> Элементы уровня блока Элемент P – абзац. Атрибут: align Значения: left, right, center, justify Заголовки: H1,H2,H3,H4,H5,H6 align Блок: DIV align Атрибуты для любых элементов: id, class, style, title, on… Списки: OL, UL, DL – нумеруемые, ненумеруемые, определений LI – элемент списка (для OL, UL) DT – термин DD – определение Атрибуты UL, OL, LI: type (disc, circle, square, 1, A, a, i, I) start число value число compact Элементы уровня строки SPAN Нежелательные: B, I, U, TT, S, BIG, SMALL EM, STRONG, CITE, DFN, CODE, SAMP, KBD, VAR, ABBR, ACRONYM EM = I, STRONG = B, CODE = TT SUB, SUP – индексы BR – разрыв строки Элементы таблицы Атрибуты: align (left, center, right) нежелательны width cellspacing, cellpadding – поля ячеек bgcolor – цвет фона (нежелателен) rules – линиивокругячеек (none, basic, rows, cols, all) frame – какиеграницы (самойтаблицы) видны (void, above, below, box, hsides, vsides, lhs, rhs) summary – краткая информация 4) Каскадные таблицы стилей. Назначение CSS. Селекторы, свойства, значения свойств. Псевдоклассы. Каскадные (многоуровневые) таблицы стилей - cascading style sheets (CSS) - это мощный стандарт на основе текстового формата, определяющий представление данных в броузере. Если формат HTML предоставляет информацию о составе документа, то таблицы стилей сообщают как он должен выглядеть. Таким образом каскадные таблицы стилей дают возможность хранить содержимое отдельно от его представления. Стиль включает все типы элементов дизайна: шрифт, фон, текст, цвета ссылок, поля и расположение объектов на странице. CSS разрабатывались так, чтобы обеспечить больший уровень контроля над размещением текста и графики. Каскадные таблицы стилей обеспечивают должный уровень единства оформления, организации и контроля во время разработки узла, который является недостижимым с помощью одного только HTML. Термин "каскадный" означает, что в одной странице HTML могут использоваться разные стили. Броузер, поддерживающий таблицы стилей, будет следовать их порядку (как по каскаду), интерпретируя информацию стилей. Это означает, что можно использовать все три типа стилей, и броузер будет интерпретировать сначала связанные, затем внедренные и, наконец, встроенные стили. Даже если ко всему узлу будут применены образцы стилей, можно будет управлять отдельными аспектами страниц с помощью внедренных стилей, а отдельными областями внутри этих страниц - с помощью встроенных стилей. Другой аспект каскадирования - наследование (inheritance). Наследование означает, что если не указано иное, то конкретный стиль будет унаследован другими элементами страницы HTML. Например, если вы примените определенный цвет текста в теге <р>, то все теги внутри этого абзаца наследуют этот цвет, если не оговорено иное. Селектором называется левая часть правила до фигурной скобки. Дальше идет блок объявления стилей который состоит из свойства и значения. Рассмотрим все особенности и виды селекторов по порядку. CSS Селектор по элементу. CSS Селекторами могут быть любые элементы html т. е. обычные теги. Например, зададим цвет и размер текста обрамленного в тег <p></p> т. е. цвет и размер абзаца текста. p {color:#666; font-size:12px;} Т. е. в этом случае тег <p> является селектором. Таким же образом в качестве селектора можно использовать любые теги. В данном случае, цвет и размер текста задается тегу <p>, и все теги <p>, которые будут встречаться в коде страницы, будут иметь заданный размер и цвет текста. Это является одновременно и достоинством и недостатком этого типа селекторов. Достоинством является то, что не нужно каждый раз задавать стиль абзацу, а недостатком то что очень часто необходимо сделать другое отличающееся от заданного, оформление абзаца, например, задать красный цвет текста. CSS Селекторы классов. Данные селекторы позволяют каждому тегу присвоить класс, который будет иметь свое определенно стилевое оформление. Присвоение класса тегу происходит следующим образом:<p class="Class1"> Псевдоэлементы применяются для выделения первой буквы параграфа, т. е. для создания так называемой буквицы, а так же для выделения первой строки параграфа. Данные элементы не присутствуют в самом html коде, а только стилях. Псевдоклассы подобны псевдоэлементам они так же не отображаются в теле html документа, а указываются только в стилях. Существую 4 псевдокласса которые предназначены для оформления ссылок это псевдоклассы обозначающие не посещенную ссылку, посещенную ссылку, ссылку при наведении курсоры мыши, а также активную ссылку которая отобразится в момент нажатия на нее. a:link {color:#548DD4} a:visited {color:#666666} a:hover {color:#B1030D} a:active {color:#92D050} В html коде записывается просто: <a href="http://webmastermix.ru">Ссылка на сайт</a> В результате не посещенная ссылка будет синей, посещенная серой, при наведении курсора мыши красной и активная, т. е. в момент нажатия зеленая. 5) Язык JavaScript. Синтаксис. Функции, объекты. Javascript - скриптовый язык, предназначенный для создания интерактивных веб-страниц. Javascript не требуется компилировать, он подключается к HTML-странице и работает "как есть". Javascript подключается напрямую в HTML-файл. Самый простой способ - это написать javascriptкоманды внутрь тега <script> где-нибудь в теле страницы. Обычно javascript-код вообще не пишут в HTML, а подключают отдельный файл со скриптом, вот так: <script src="/my/script.js"></script> Основные элементы языка Базовые типы: Строки, Числа, Boolean Массивы Функции задаются объявлением function со списком параметров: Javascript - объектный язык. В нем все является объектами. Строки, числа, функции и массивы все это объекты со своими методами и свойствами. Это надо знать и иметь в виду с самого начала. Методы объектов вызываются через точку. 6) Средства отладки программ на JavaScript. FireBug. В связи с достаточно широким выбором неплохих отладчиков, JavaScript-программисты могут получить достаточно много пользы, изучая то как их можно использовать. Их пользовательские интерфейсы становятся все более совершенными, более стандартизированными между собой и более легкими в использовании, что делает их полезными как для экспертов так и новичков в отладке JS. В этой статье мы обсудим передовые методы отладки для диагностики и анализа ошибок, используя типичное веб-приложение. На данный момент Firebug и Технология отладки. Натыкаясь на определенную проблему, обычно вы будете проходить следующие этапы 1. Найти соответствующий код на панели просмотра кода отладчика 2. Установить контрольную точку или точки в том месте, которое вам кажется потенциально проблемным 3. Запустить скрипт еще раз, перезагрузив страницу или нажать кнопку, если речь идет об обработчике события. 4. Ждать, пока отладчик остановит выполнение и сделает возможным пошаговое выполнение кода. 5. Исследовать значения переменных. Например, искать переменные, которые почему то неопределенны(undefined), хотя должны содержать значение, или возвращают «ложь», хотя вы ожидаете, что они возвратят «истину». 6. В случае необходимости, использовать командную строку, для вычисления кода или изменения значений переменных 7. Найти проблему изучив часть кода её вызвашую и устранить её. FireBug – дополнение к FireFox Возможности: Анализ html-кода страницы Вычисление CSS Работа с JavaScript Анализ сетевой активности Анализ html-кода страницы, CSS Изображение дерева документа Поиск html-кода по изображению на странице Подсветка элемента по html-коду Показ правил, действующих на элемент И CSS и html – вычисленные (после выполнения скриптов) Отладка программ на JavaScript Указание ошибок Установка точек останова Просмотр значений переменных Выполнение по шагам Firebug включает в себя мощный javascript отладчик, который позволяет приостанавливать выполнение в любой момент и анализировать все, что угодно. Если Ваш код подтормаживает, используйте javascript профилировщик, чтобы измерить производительность и быстро найти узкие места. Анализ сетевой активности Время начала и окончания загрузки по каждому запросу: DNS-запрос Подключение Отправка HTTP-запроса Ожидание ответа Получение данных 7) Язык JavaScript. Объектная модель документа. JavaScript поддерживает так называемые внешние классы и объекты, определенные другими программами. Web-страница, которую вы просматриваете в окне Web-обозревателя, может быть описана как набор объектов. Скажем, она включает большой объект "документ-в-целом" и более мелкие объекты: "абзац-1", "абзац-2", "абзац-1" и "рисунок". Вы можете обращаться к этим объектам из того же JavaScript. Структура объектной модели Чтобы было понятно, о чём мы говорим, рассмотрим общую структуру объектной модели. Ниже приведена объектная модель Internet Explorer-а версии 4 и выше: window - объект, дающий доступ к окну броузера frames - объект, дающий доступ к фреймам o window... o window... o ... document - объект, содержащий в себе всю страничку o all - полная коллекция всех тегов документа o forms - коллекция форм o anchors - коллекция якорей o appleеs - коллекция апплетов o embeds - коллекция внедренных объектов o filters - коллекция фильтров o images - коллекция изображений o links - коллекция ссылок o plugins - коллекция подключаемых модулей o scripts - коллекция блоков <script></script> o selection - коллекция выделений o stylesheets - коллекция объектов с индивидуально заданными стилями history - объект, дающий доступ к истории посещенных ссылок navigator - объект, дающий доступ к характеристикам броузера location - объект, содержащий текущий URL event - объект, дающий доступ к событиям screen - объект, дающий доступ к характеристикам экрана НУ я хз, как ответить на этот вопрос правильно, вот такая вот обьектаная модель и мы что хотим с не то и делаем. Как видите, структура объектной модели достаточно сложна, но строго определена, и существует однозначный способ доступа к любому свойству или методу. Синтаксис полностью соответствует тому, что используется в объектных языках. Т.е. нижележащие объекты отделяются от вышележащих точкой, и для доступа к конкретному свойству нужно просто корректно построить строку доступа 8.Управление видимостью и позиционированием элементов на html-страницах. В html существуют возможность делать объект видимым или невидимым, причем есть различные варианты, и они по-разному отображают содержимое. Есть свойство, которое позволяет управлять видимостью содержимого элемента. visibility – управляет видимостью содержимого элемента. Значения: Visible – содержимое отображается. hidden – содержимое не отображается. Следующее свойство, которое позволяет управлять видимостью блока – это display. display – определяет, как будет отображаться элемент Значения: none – элемент не отображается block - разбивает строку до и после элемента (т.е. элемент не может находится на одной линии с другими элементами) inline - не разбивает строку Позиционированием называют определение конкретного месторасположения на странице того или иного элемента (бокса). Позиционирование бывает абсолютным, относительным, фиксированным и статическим. Итак, для того, что бы позиционировать какой либо элемент к нему применяют свойство position и одно из его возможных значений: absolute - Абсолютное позиционирование элемента. relative - Относительное позиционирование элемента. fixed - Фиксированное позиционирование элемента. static - Статическое позиционирование элемента. (Элемент отображаются как обычно.) inherit - Наследует значение элемента родителя. Абсолютно позиционированный элемент (position: absolute) выводится из общего потока и несмотря на другие элементы и их взаимное расположение, занимает указанное место на странице от края/краёв окна браузера. При таком способе позиционирования один элемент может накладываться поверх другого. Для того чтобы позиционировать элемент от края/краёв окна браузера, нам понадобятся следующие свойства CSS: bottom - Расстояние от нижнего края окна браузера. left - Расстояние от левого края окна браузера. right - Расстояние от правого края окна браузера. top - Расстояние от верхнего края окна браузера. Данные расстояния могут быть заданы в пикселях, процентах, значение по умолчанию – auto. носительное позиционирование (position: relative) определяет место элемента относительно краёв элемента родителя и не выводится из общего потока. Так же как и в случае с абсолютным позиционированием расстояния от края/краёв родительского элемента задаётся с помощью свойств: bottom, left, right, top. 9.Обработка событий. События, связанные с действиями мышкой и клавиатурой. Приложения JavaScript в браузере Navigator широко используют механизм обработки событий. Events\События это акции, которые обычно возникают как результат некоторых действий пользователя. Например, щелчок по кнопке является событием, также как и изменение текста или перемещение мыши над гиперссылкой. Чтобы Ваш скрипт реагировал на события, Вы определяете eventhandlers\обработчики событий, такие как onChange и onClick. Каждое событие имеет ассоциированный объект event. Объект event предоставляет информацию о событии, такую как тип события и положение курсора в момент возникновения события. Когда событие возникает, и если обработчик был написан для обработки этого события, объект event отправляется обработчику как аргумент. В случае с событием MouseDown, например, объект event содержит тип события ("MouseDown"), координаты x и y позиции курсора мыши в момент возникновения события, число - используемую кнопку мыши и поле, содержащее клавиши-модификаторы (Control, Alt, Meta или Shift), которые были нажаты в момент события. Свойства объекта event различаются для разных типов событий, как описано в книге События mousedown, mouseup и click Когда пользователь кликает на элемент, то срабатывает не меньше чем 3 события мыши в таком порядке: mousedown, пользователь нажал кнопку мыши на элементе mouseup, пользователь отпустил кнопку мыши на элементе click, обнаружены события mousedown и mouseup на элементе В основном события mousedown и mouseup более полезны нежели click. Иногда пользователь кликает мышкой, но событие click не срабатывает. Предположим, что пользователь нажал кнопку на ссылке, потом отвел курсор куда-то в сторону и отпустил кнопку. Ссылка обработала только mousedown событие. Также можно возпроизвести и противоположную ситуацию когда пользователь нажимает кнопку мыши, а потом наводит курсор на ссылку и отпускает кнопку. Срабатывает только mouseup событие. В остальных случаях срабатывает click. Так или иначе, эта проблема возникает только если Вы сами этого захотите Вы должны зарегистрировать обработчики событий onmousedown/up, но в большинстве случаев хватает события click. Событие dblclick (двойной клик) Событие dblclick используется намного реже всех остальных событий мыши. Если Вы всетаки используете его, убедитесь в том, что не используете обработчики событий onclick и ondblclick для одного и того же HTML элемента. Определить что сделал пользователь практически невозможно в таком случае. Когда пользователь делает двойной клик на элементе сначала срабатывает событие click и только потом dblclick. Использование alert сообщений здесь также крайне опасно. Mousemove событие Событие mousemove работает нормально, но Вы должны помнить, что обработка такого рода событий может занимать некоторое количество времени. Событие mousemoveсрабатывает когда пользователь передвигает курсор мыши на один пиксель. Mouseover и mouseout события Давайте рассмотрим небольшой пример. Попробуйте поводить курсор мышки поверх элементов с разным фоном. Элемент 1 должен слегка мигать при наведении на него курсором - это срабатывает событие mouseover. element№1 element№2 span Тем не менее, как Вы видите, это событие срабатывает и при наведении курcора мыши на элемент№2 и даже span. Причина такого поведение в том, что событие установленное на первый элементы также применяется к его дочерним нодам. Все предельно ясно, но проблема возникает тогда, когда нам надо совершить какое-то действие при переходе курсора мышки, например, от элемента span к элементу№2. 10) Технология AJAX. AJAX (Asynchronous JavaScript And XML), по сути, не является технологией, скорее это идея фонового взаимодействия вебстраницы с удаленным сервером через специальную компоненту встроенную в ваш браузер. Если посмотреть глубже в саму сущность, то AJAX — это сумма нескольких самостоятельных технологий, которые могут быть эффективно использованы вместе. Компоненты без которых AJAX был бы не возможен: -JavaScript - асинхронные запросы отправляются c его помощью. Не забываем, что для связи используется специальная компонента взаимодействия c сервером, у каждого браузера она может быть своя, хотя возможно взаимодействие и без специальной компоненты. -XML - данные от сервера идут именно в этом формате (хотя это и не обязательно, можно использовать любой другой формат), преобразовываются и визуализируются, используя Document Object Model(DOM) -HTML&CSS - отношение к технологии AJAX косвенное, так сложилось, что многие относят визуальные javascript манипуляции над HTML и CSS к аббревиатуре AJAX - это одно из самых ярких заблуждений. Возникло данное заблуждение из-за того, что javascript фреймворки зачастую включают в себя, как возможность создавать различные эффекты, так и набор функционала для асинхронной передачи, еще одной первопричиной можно назвать то, что javascript -эффекты и AJAX часто одновременно присутствуют на сайтах или веб-приложениях. «Классический подход» Классические Веб-приложение работает примерно следующим образом: большинство действий пользователя вызывает обращение к серверу. Сервер занимается обработкой запроса (принимает данные), производит некоторые манипуляции с ними, и возвращает пользователю HTML страничку. В принципе тут немного отличий от методики AJAX, просто задача обращения к серверу ложится на браузерную компоненту, которая как принимает, так и возвращает данные, но страница при этом не перегружается. Классический подход удобен для разработки, но не использования. Пока сервер выполняет свою работу пользователь ждет. И, с выполнением каждой следующей операции, он снова ждёт, и так при смене каждой страницы. «Современный AJAX подход» Суть методологии Ajax – это свести к минимуму цикл «передачи данных/пауза, ожидания ответа» и постараться сделать общение пользователя с конкретным веб-сайтом как можно ровнее. Все пользовательские запросы, обычно отправляемые веб-серверу, вместо этого направляются Ajax-движку посредством JavaScript. Движок принимает решение – необходима ли загрузка данных с сервера или нет(возможен случай,когда некоторые данные уже закешированы). Если данные необходимо отправить или загрузить – это происходит в фоне и независимо от самого веб-приложения, не прерывая процесс общения пользователя с веб-сайтом. Данные отправляются и принимаются асинхронно, обычно используя XML представление. 11) Порядок работы WWW-сервиса. Обмен данными между сервером и клиентом. Формы World Wide Web – интерактивный сервис Internet, в основу которого положено гипертекстовое представление информации в Сети. На серверах Web структуризация данных происходит не на уровне совокупностей данных (файлов), а внутри них. В самих документах имеются ссылки на другие документы, в которых может находиться пояснение или иллюстрация какой-то мысли или термина в исходном тексте. Такая схема представления данных и называется гипертекст; ему присуща не древовидная структура хранения данных (как в файловой системе), а сетевая. Отсюда и пошло название серверов Web (паутина). Гипертекст позволяет просматривать информацию, выбирая при каждом доступе к ней новый маршрут (или гипертекстовую связь). Стандарт на правила построения таких документов известен как HTML (HyperText Markup Language). Каждый отдельный HTML-файл называется страницей. WWW – это система клиент/сервер, которая поддерживает эти гипертекстовые связи. Информация на WWW-сервере обычно представлена в виде отдельных страниц, содержащих не только текст, но и графические объекты, звук и видео. В связи с этим, для поддержки данного сервиса требуются быстрые линии связи и соответствующее оборудование (компьютеры, модемы, сетевое оборудование). Клиентская часть для работы с такой информацией, проводник Internet (или browser), позволяет просматривать все эти типы данных, запускать внешние приложения. Существует множество реализаций проводников Internet от разных поставщиков, и от выбора программы просмотра зависит, насколько комфортно смогут чувствовать себя пользователи, работая в глобальной сети. В настоящее время наибольшее распространение получили браузеры фирм Microsoft и Netscape: Internet Explorer и Netscape Navigator соответственно. Схема работы проста: клиент запрашивает информацию, в ответ на запрос сервер посылает информацию клиенту. Для определения запроса в web-браузере необходимо ввести специальную строку URL – Uniform Resource Locator (универсальный указатель ресурса). Например, http://www.bsu.edu.ru IP-адресация и система доменных имен Для обеспечения уникальности имени каждого узла в сети Интернет применяется специальная система, именуемая IP-адресацией. Различают фиксированные (постоянные) и временные IPадреса. Большинство пользователей, подключающихся к сети через обычные модемы для установления временного сеанса связи, не имеют фиксированного IP-адреса. Им присваивается лишь временный IP-адрес. Компьютеры в организациях, локальные сети которых подключены к Интернету 24 часа в сутки, как правило, имеют свои уникальные фиксированные IP-адреса. Адрес IP (Internet Protocol) – это 32-битный компьютерный адрес, с которым непосредственно работают компьютеры Internet. IP-адрес записывается в виде четырех чисел, разделенных точками, например, 196.201.90.0. Каждое из четырех чисел не превышает значение 255. Трактоваться числовой адрес может по-разному. Обычно в нём отражаются класс сети, номер сети и номер компьютера. Для того чтобы узнать IP-адрес вашего компьютера, можно запустить входящую в состав Windows 98 программу WINIPCFG.exe: меню Пуск->Выполнить->WINIPCFG. Для того, чтобы определить IP-адрес компьютера в Интернет, например Web-сервера фирмы Microsoft, запустите программу PING.exe, указав в качестве параметра адрес этого сервера: меню Пуск->Выполнить-> PING www.microsoft.com. Цифровая нумерация является языком общения компьютеров, однако очень неудобна для запоминания. Поэтому существует другой тип адресации: система доменных имен. Слово «домен» (domain) можно перевести как «территория, сфера, область». Служба имен доменов – Domain Name System (DNS) – транслирует имена компьютеров в соответствующие адреса IP и обратно. Благодаря этому пользователю не нужно ничего знать о компьютерных IP-адресах. В доменном адресе, как правило, отражаются: имя, определение рода деятельности владельца и код страны. Например, в адресе www.bsu.edu.ru, www указывает на принадлежность узла к Всемирной Информационной Паутине (World Wide Web), bsu – название организации (БелГУ) , а ru (Russia) указывает на место дислокации данной организации. Исторически сложились следующие сокращения для определения в доменном адресе рода деятельности организации: com или co (коммерческие организации), edu (учебные и научные организации), gov (правительственные организации), mil (военные организации), net (сетевые организации разных сетей, в том числе, провайдеры), org (другие организации). bbbbДля указания страны используются двухбуквенные коды: ru (Россия), ua (Украина), uk (Великобритания), jp (Япония), de (Германия), fr (Франция) и т.д. URL (Uniform Resource Locator) Аvv дрес ресурса записывается в нотации, которая называется URL (Uniform Resource Locator). Запись URL имеет следующий формат: <схема доступа>://<имя_машины .имя_домена/полное_имя_файла>. Примерами значений параметра <схема доступа> могут быть http, ftp, gopher. Вторая часть URL, то есть <имя_машины.имя_домена /полное_имя_файла>, определяет удаленный компьютер сети, на котором хранится данная информация и полное указание местоположения файла в файловой системе удаленного компьютера. Название схемы доступа отделяется двумя косыми чертами (//) от Интернет-адреса компьютера, который, в свою очередь, отделен одной косой чертой (/) от полного (с указанием пути) имени файла. Пример: страница издательства Санкт-петербургского государственного медицинского университета имеет URL http://www.spmu.runnet.ru/ publishing/. Рассмотрим, как разделить этот адрес на составляющие: http: – эта последовательность символов означает, что для доступа к ресурсу используется протокол передачи гипертекста (HTTP протокол); www.spmu.runnet.ru – идентифицирует Интернет-адрес компьютера сети, на котором размещен данный ресурс; publishing – имя папки, в которой находятся файлы. Как же программа просмотра WWW использует URL для нахождения страницы в Интернет? Когда программа-просмотрщик (броузер) получает от Вас адрес страницы, например, http://www.med.upenn.edu/ educate/, она выделяет имя домена из этого URL в соответствии с вышеописанной схемой. В нашем случае это med.upenn.edu. Это имя передается серверу DNS вашего провайдера. Система серверов DNS может быть представлена как очень большая база данных. Сервер DNS получает доменное имя и возвращает в ответ соответствующий IP-адрес (в нашем случае – 165.123.128.12). Этот IP-адрес используется не только для идентификации компьютера сети, но и для маршрутизации передаваемого ему запроса. Начальная последовательность цифр адреса, 165, направляет запрос в Северную Америку. Дополнительные маршрутизаторы, связывающие различные сегменты Интернет в Северной Америке, в итоге направят запрос в г. Филадельфию, штат Пенсильвания, в Университет штата Пенсильвания. Как только запрос попадет на маршрутизатор домена с именем med.upenn.edu, он переправляется на компьютер с именем www, в соответствии с первой частью имени домена, и, в итоге, ссылается на соответствующий каталог /educate/ и файл index.html. Компьютер, на котором находится этот файл, направит пакеты с его содержимым по IP адресу Вашего компьютера. Обработка событий Формы Атрибуты: action – url обработчика method – post или get Обработка клиентом: Вызов кода происходит ДО стандартной обработки Возврат значения false отменяет стандартную обработку (это позволяет, в частности, проверить данные перед отправкой на сервер) Обработка сервером: На сервере вызывается программа-обработчик запроса 12) Апплеты и другие объекты на html-страницах. Апплеты отличаются от простых Java-приложений тем, что они могут встраиваться в HTML-код. Апплеты – это client side приложения. Это означает, что выполняются они на машине пользователя, который открыл станицу, содержащую Java-апплет. С одной стороны это дает свободу действий, ведь апплет может делать все то, что вправе делать сам пользователь. А с другой стороны – мы лишаемся некоторых преимуществ server side приложений. Основным ограничением апплетов является ограничение на чтение и запись локальных файлов на компьютере пользователя. Но это не распространяется на чтение файлов из Сети. Это ограничение было введено из соображений безопасности. Java-апплеты имеет сравнительно большие возможности, и с их помощью можно было бы без труда копировать данные с машины пользователя на какой-нибудь FTPсервер, или же отсылать по почте. Создание апплетов несколько отличается от создания обычных Java-приложений. Для создания апплетов в Java существует набор пакетов java.applet.*. Однако чем же все-таки является апплет? С технической стороны, апплетом может служить любой класс, расширяемый от класса Applet пакета java.applet. Это фактическое определение, однако не исчерпывающее. Если у вас имеется данный подкласс, вы можете добавить его к web-странице, разместив между тегами <APPLET> - </APPLET>. После этого броузер будет загружать класс апплета и отображать его в назначенном пространстве. Кроме этого у вас в распоряжении имеются методы init, start, stop и destroy. При рисовании и отображении областей применяется метод paint, так как Applet является подклассом java.awt.Component. Эти пять ключевых методов работают следующим образом: init – вызывается при загрузке броузером основного класса Applet. Обычно у апплетов нет конструктора. Вместо этого используется код их единовременной инициализации. start – вызывается в начале выполнения апплета при посещении пользователем страницы. stop – вызывается для остановки выполнения аплета, когда пользователь покидает страницу, содержащую данный апплет. destroy – вызывается в случае, если броузер должен завершить работу апплета. При этом ресурсы можно восстановить, однако у вас не будет над ними контроля. paint – вызывается, когда броузер определяет, что область отображения апплета является неверной. В качестве примера рассмотрим апплет, который при вызове каждого из пяти методов выводит информацию в консоль. Метод paint используется также для отображения сообщения на экране. При каждом вызове метода paint число увеличивается. При этом напрашивается вопрос о том, где же можно найти сообщения, записываемые в консоль. Ответ зависит от используемого броузера, а иногда и от его версии. В IE 6.0 Java Console находится в меню Tools. В рабочем цикле Microsoft и IE6 консоль расположен в меню View. А в броузерах Mozilla и Netscape 7.0, Java Console находится в меню Web Development (вложено в меню Tools). Код апплета выглядит следующим образом: import java.awt.*; import java.applet.*; public class FirstApplet extends Applet { public void init() { System.out.println("In init()"); } public void start() { System.out.println("In start()"); } public void stop() { System.out.println("In stop()"); } public void destroy() { System.out.println("In destroy()"); } public synchronized void paint(Graphics g) { System.out.println("In paint()"); g.drawString("Painting...", 50, 50); } } Скомпилируйте апплет так же, как и любой другой исходный файл: javac FirstApplet.java Если в файле не будет ошибок, будет создан класс FirstApplet.class. Загрузка апплетов несколько отличается от загрузки автономных программ. Вместо обеспечения основного метода, исполняемого один раз при загрузке файла, загрузка апплета требует наличия HTML-файла. Именно в нем размещается тег <APPLET>. Для апплета, файлзагрузчик должен выглядеть так, как представлено ниже, и располагаться в той же директории, что и файл .class: <APPLET code=FirstApplet height=200 width=200> </APPLET> Атрибут code указывает имя загружаемого класса. Значение атрибутов width и height очевидно – при их помощи выставляется желаемый размер отображения апплета. Если файл класса апплета использует базовую директорию отличную от директории файла-загрузчика HTML, вам потребуется задать CODEBASE, позволяющий указать броузеру расположение базовой директории. Поместите данный тег в любой HTML-файл и загрузите его в браузере. 13) XML и HTML. Синтаксис XML. Отличие XML от HTML. DTD. Браузер, отображающий HTML-страницу, распознает каждый из этих стандартных элементов и отображает их в соответствующем формате. Хотя набор HTML-элементов был существенно расширен по сравнению с первой версией HTML, язык HTML по-прежнему не пригоден для пред-ставления многих типов документов. Ниже приведены примеры документов, которые не могут быть адекватно описаны с помощью языка HTML: a)Документ, который не содержит типовых компонентов (заголовков, абзацев, списков, таблиц и т.д.) Например, в языке HTML отсутствуют элементы, необходимые для отображения музыкальных символов или математических уравнений. b)База данных, такая как каталог книг. Вы можете использовать HTML-страницу, чтобы хранить и отображать информацию из статической базы данных (например, перечень книг и их описание). Однако, если бы вам понадобится осуществить сортировку, фильтрацию, поиск и обработку информации, придется снабдить каждую из составных частей информации соответствующей меткой (как в программе, работающей с базами данных, такой как Microsoft Access). В языке HTML не предусмотрено соответствующих элементов. Xml позволяет решать эти проблемы Описание на языке XML представляет собой операторы, написанные с соблюдением определенного синтаксиса. Когда вы создаете XML-документ, то вместо использования ограниченного набора определенных элементов вы имеете возможность создавать ваши собственные элементы и присваивать им любые имена по вашему выбору - именно поэтому язык XML янлнстсн расширяемым (extensible). Следовательно, вы можете использовать XML для описания практически любого документа, от музыкалькой партитуры до базы данных. Поскольку в XML нет типовых элементов, может показаться, что в нем вообще отсутствуют какие-либо стандарты. Тем не менее, язык XML имеет строго определенный синтаксис. Вот дальше всякое говно про синтаксис xml и я хз, нужно ли ему это все рассказывать..) Просто почитать самому. __________________________________________________________________________ XML — это иерархическая структура, предназначенная для хранения любых данных, визуально структура может быть представлена как дерево. Важнейшее обязательное синтаксическое требование заключается в том, что документ имеет только один корневой элемент (англ. root element) (альтернативно называемый элементом документа (англ. document element)). Это означает, что текст или другие данные всего документа должны быть расположены между единственным начальным корневым тегом и соответствующим ему конечным тегом. часть XML-документа состоит из вложенных элементов, некоторые из которых имеют атрибуты и содержимое. Элемент обычно состоит из открывающего и закрывающего тегов, обрамляющих текст и другие элементы. Открывающий тег состоит из имени элемента в угловых скобках, например, <step>; закрывающий тег состоит из того же имени в угловых скобках, но перед именем ещё добавляется косая черта, например, </step>. Содержимым элемента (англ. content) называется всё, что расположено между открывающим и закрывающим тегами, включая текст и другие (вложенные) элементы. Ниже приведён пример XML-элемента, который содержит открывающий тег, закрывающий тег и содержимое элемента Кроме содержания у элемента могут быть атрибуты — пары имя-значение, добавляемые в открывающий тег после названия элемента. Значения атрибутов всегда заключаются в кавычки (одинарные или двойные), одно и то же имя атрибута не может встречаться дважды в одном элементе. Не рекомендуется использовать разные типы кавычек для значений атрибутов одного тега. <ingredient amount="3" unit="стакан">Мука</ingredient> В XML- документах DTD определяет набор действительных элементов, идентифицирует элементы, которые могут находиться в других элементах, и определяет действительные атрибуты для каждого из них. Синтаксис DTD весьма своеобразен. Так.. ну тут кароче просто впаривать ему, мол иннах синтаксис я те щас не буду рассказывать просто в этом файле мыи определяем, какой элемент в какой вложен, сколько элементов мб в другом итд. 14.)Способы визуализации XML-документа. Спецификация стилей, применяемых в процессе форматирования XML-документа, осуществляется двумя способами: с применением каскадных таблиц стилей (CSS, Cascading Style Sheets) и расширяемого языка таблиц стилей (XSL, Extensible Stylesheet Language ). Для визуализации содержимого файла XML с помощью CSS можно использовать каскадную таблицу стилей CSS. Подключить ее можно следующим образом: <?xml-stylesheet type="text/css" href="sheet.css" ?> Эта инструкция указывает броузеру на то, что используется таблица стилей CSS, именуемая sheet.css. Поскольку не был указан путь для размещения таблицы стилей, она по умолчанию размещается в том же каталоге, где находится XML-документ Для визуализации содержимого файла XML с помощью XSL можно использовать XSL. Подключить его можно следующим образом: <?xml-stylesheet type="text/xsl" href="sheet.xsl" ?> Сильной стороной XSL является то, что преобразование может состоять из нескольких отдельных листов стилей, и даже быть представлено в виде их иерархии. Это позволяет использовать модульный подход к разработке трансформаций, где шаблоны XSL аналогичны процедурам языков программирования. Мы можем скрывать их реализации, размещая шаблоны в отдельных листах стилей, а также подменять одни модули другими без изменения и доработок остального кода проекта. При обращении к шаблонам разработчикам нет необходимости задумываться о том, кто и как реализовывал соответствующие преобразования. Это имеет особое значение, если написанием кода занимается не один человек, а целая команда. Реализация модульного подхода в XSL обладает еще одним важным качеством – полиморфизмом, то есть шаблон, созданный в одном листе стилей, может быть переопределен в другом, что позволяет варьировать его действие на различных уровнях иерархии кода проекта. 15)HTTP-протокол, запрос, ответ. Заголовки запроса и ответа. Коды завершения. CGI. Переменные окружения. 16)Программирование на стороне сервера. Языки, используемые для программирования на стороне сервера. SSI. 17)Язык PHP. Синтаксис, типы данных. Шаблоны в PHP. 18)Язык Java. Сервлеты. Скриптлеты. Java — объектно-ориентированный язык программирования Программы на Java транслируются в байт-код, выполняемый виртуальной машиной Java (JVM) — программой, обрабатывающей байтовый код и передающей инструкции оборудованию какинтерпретатор. Трансляция в байтовый код увеличивает скорость выполнения и уменьшает размер Java программ. Достоинство подобного способа выполнения программ — в полной независимости байт-кода от операционной системы и оборудования, что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности благодаря тому, что исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером) вызывают немедленное прерывание. Часто к недостаткам концепции виртуальной машины относят то, что исполнение байт-кода виртуальной машиной может снижать производительность программ и алгоритмов, реализованных на языке Java. Данное утверждение было справедливо для первых версий виртуальной машины Java, однако в последнее время оно практически потеряло актуальность. Этому способствовал ряд усовершенствований: применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT-технология) с возможностью сохранения версий класса в машинном коде, широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках, аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle, поддерживаемая некоторыми процессорами фирмы ARM). Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине. [18] Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI, заложенной в основу платформы .NET компаниейMicrosoft. Сервлеты – специализированные приложения для выполнения сервером Сервлет является Java-программой, выполняющейся на стороне сервера и расширяющей функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ. Сервлеты должны реализовывать Servlet интерфейс, который определяет методы жизненного цикла. .Сервлет - это Java программа, которая выполняется WEB-сервром или сервером приложений (Application Server) и реализует интерфейс javax.servlet.Servlet. Сервлеты подобны CGI-приложениям и предназначены для обработки запросов Internet-клиентов или броузеров и ответов на эти запросы. Как и в случае с CGI-приложениями, взаимодействие с сервлетами происходит через HTTP или защищенный HTTPS протоколы. Скриптлеты – JSP. Наиболее наглядный вид серверных страниц Скриптлеты используются для описания акций, выполняемых в ответ на некоторый запрос. Скриптлеты являются фрагментами программы, которые также могут использоваться для выполнения действий типа итераций и условного выполнения других элементов на JSP-странице. Скриптлеты Скриптлеты могут содержать любые фрагменты кода, которые являются верными для языка скриптинга, специфицированного директивой language. Является ли фрагмент кода действующим, зависит от деталей языка скриптинга. Скриптлеты выполняются во время обработки запроса. Производят они вывод в поток вывода или нет, зависит от кода скриптлета. Скриптлеты могут иметь побочные эффекты, модифицируя объекты, видимые для них. Когда все фрагменты скриптлетов в данном трансляционном модуле комбинируются для появления на JSPстранице, они обязаны давать в результате верный оператор или последовательность операторов на специфицированном языке скриптинга. Чтобы использовать последовательность символов %> как литеральные символы в скриптлете, вместо того , чтобы они оканчивали скриптлет, вводите их так %\>. Скриптлеты JSP Скриптлеты включают различные фрагменты кода, написанного на языке скрипта, определенного в директиве language. Фрагменты кода должны соответствовать синтаксическим конструкциям языкаскриптлетов, т.е., как правило, синтаксису языка Java. Скриптлеты имеют следующий синтаксис: <% текст скриптлета %> Эквивалентом синтаксиса скриптлета для XML является: <jsp:scriptlet> текст скриптлета </jsp:scriptlet> Если в тексте скриптлета необходимо использовать последовательность символов %> именно как сочетание символов, а не как тег - признак окончания скриптлета, вместо последовательности %> следует использовать следующее сочетание символов %\>. В спецификации JSP приводится простой и понятный пример скриптлета, обеспечивающего динамическое изменение содержимого страницы JSP в течение дня. <% if (Calendar.getInstance ().get (Calendar.AM_PM) == Calendar.AM) {%> Good Morning <% } else { %> Good Afternoon <% } %> Необходимо заметить, что код внутри скриплета вставляется в том виде, как он записан, и весь статический HTMLтекст (текст шаблона) до или после скриплета конвертируется при помощи оператораprint. Это означает что скриплеты не обязательно должны содержать завершенные фрагменты на Java, и что оставленные открытыми блоки могут оказать влияние на статический HTML-текст внескриплета. Скриплеты имеют доступ к тем же автоматически определенным переменным, что и выражения. Поэтому, например, если есть необходимость вывести какую-либо информацию на страницу, необходимо воспользоваться переменной out. <% String queryData = request.getQueryString (); out.println ("Дополнительные данные запроса: " + queryData); %> 19) JSP. Сервер TomCat. Технология Java Server Pages (tm) (JSP) позволяет разработчикам и дизайнерам web-приложений быстро разрабатывать и легко сопровождать web-страницы с динамическим наполнением информацией. Отличия. действительно высокая межплатформенная переносимость; использование универсального языка высокого уровня Java в качестве скриптового; JSP -- это не какое-то отдельно стоящее средство для решения достаточно узкого круга задач, пусть и достаточно мощное, а ещё одно в ряде целой плеяды технологий, объединяемых Java; реальная возможность разделить задачи написания бизнес-логики web-приложения и пользовательского интерфейса, что позволяет разрабатывать и сопровождать различные части проекта независимо; JavaServer Pages (JSP) позволяют вам отделить динамическую часть ваших страниц от статического HTML. Вы, как обычно, пишете обычный код в HTML, используя для этого любую программу для создания Web страниц. Затем вы заключаете динамическую часть кода в специальные таги, большинство которых начинаются с "<%" и завершаются "%>". Сервлет является Java-программой, выполняющейся на стороне сервера и расширяющей функциональные возможности сервера. Сервлет взаимодействует с клиентами посредством принципа запрос-ответ. Помимо стандартных HTML конструкций существуют еще три основных типа конструкций JSP, котрые вы можете включить в страницу: элементы скриптов, директивы и действия. Элементы скриптов позволяют вам указать код на языке Java, который впоследствии станет частью в конечный сервлет, директивы дадут вам возможность управлять всей структурой сервлета, а действия служат для задания существующих используемых компонентов, а также для контроля поведением движка JSP. Для упрощения элементов скриптов, вы имеете доступ к нескольким заранее определенным переменным, таким, например, как переменная request, использованная в приведенном выше отрывке. Элементы скриптов JSP позволяют вам вставлять код на Java в сервлет, создаваемый из текущей JSP страницы. Существуют три формы: 1. Выражения, имеющие форму <%= выражение %>, которые обрабатываются и направляются на вывод, 2. Скриплеты, имеющие форму <% код %>, которые вставляются в метод service сервлета 3. Объявления, имеющие форму <%! код %>, которые вставляются в тело класса сервлета, вне существующих методов. Все они в отдельности будут подробно рассмотрены далее. 20.Пользовательские действия в JSP. JSTL. Стандартные JSP-теги, предназначенные для вызова компонентов JavaBeans и распределения запросов, упрощают разработку и обслуживание JSP-страницы. Технология JSP предоставляет также механизм для инкапсуляции других типов динамической функциональности в пользовательских тегах, которые являются расширениями языка JSP. Пользовательские теги обычно распространяются в виде библиотеки тегов, в которой определяется набор связанных пользовательских тегов и содержатся объекты, реализующие эти теги. Некоторыми примерами задач, которые могут быть выполнены при помощи пользовательских тегов, являются операции над скрытыми объектами, обработка форм, обращение к базам данных и к другим корпоративным службам, таким как электронная почта и службы каталогов, выполнение передачи управления. Библиотеки JSP-тегов создаются разработчиками, являющимися профессионалами в языке программирования Java и экспертами в области доступа к данным и другим службам. Эти библиотеки используются дизайнерами Web-приложений, которые могут сосредоточиться на вопросах презентации, а не заниматься доступом к корпоративным службам. Пользовательские теги увеличивают производительность посредством инкапсуляции повторяющихся задач, что дает возможность их повторного использования в более чем одном приложении. Пользовательский тег представляет собой определенный пользователем элемент JSP-языка. Когда JSPстраница, содержащая пользовательский тег, транслируется в сервлет, тег преобразовывается в операции над объектом, называемым обработчиком тега. Затем Web-контейнер вызывает эти операции во время выполнения сервлета JSP-страницы. Пользовательские теги имеют богатый набор возможностей. Они могут: Быть настроенными при помощи атрибутов, переданных из вызывающей страницы. Обращаться ко всем объектам, доступным JSP-странице. Изменять ответ, генерируемый вызывающей страницей. Взаимодействовать между собой. Вы можете создать и инициализировать компонент JavaBeans, создать переменную, обращающуюся к этому компоненту в одном теге, и затем использовать этот компонент в другом теге. Быть вложенными, разрешая сложные взаимодействия в JSP-странице. JSTL(JavaServer Pages Standard Tag Library) — в переводе с английского «стандартная библиотека тегов JSP». Она расширяет спецификацию JSP, добавляя библиотеку JSP тегов для общих нужд, таких как разбор XML данных, условная обработка, создание циклов и поддержка интернационализации. JSTL является альтернативой такому виду встроенной в JSP логики, как скриптлеты, то есть прямые вставки Java кода. Использование стандартизованного множества тегов предпочтительнее, поскольку получаемый код легче поддерживать и проще отделять бизнес-логику от логики отображения. 21. История развития Web-сервиса. Web 2.0. Вики-разметка. Когда компьютерные сети перестали быть разрозненными и вышли из разряда сугубо научных и военных прерогатив, зародился Интернет. Спустя несколько лет он стал эффективным инструментом ведения бизнеса. Электронные бизнес отношения закономерно требовали обмена информацией между приложениями, вследствие этого возникла потребность их интеграции и консолидации данных. ИТ-сообщество разработчиков и технологов поспешило удовлетворить эту потребность бизнеса, и в течение нескольких лет было создано несколько технологий взаимодействия распределенных приложений. Наибольшее распространение получили RPC (Remote Procedure Calls), DCOM (Distributed COM), RMI (Remote Method Invocation), CORBA (Common Object Request Broker Architecture). Эти технологии действительно решали вышеназванную проблему, но не до конца. Дело в том, что все они имели существенный недостаток – не были универсальны и не подходили для работы в гетерогенных средах (то есть их реализация зависела, к примеру, от используемой операционной системы). Кроме того, очень трудно было наладить между ними совместную работу. По сути дела, при реализации интеграции с использованием этих технологий образовывались глобальные группы взаимодействующих приложений, но сама проблема обмена информации на уровне таких групп не была решена. Решить проблему объединения данных различных сред смог бы некий платформо-независимый базис и построенная на нем новая технология. В качестве такой основы был выбран язык метаданных XML (Extensible Markup Language). XML представляет собой семейство технологий: язык разметки данных, различные модели интерпретации содержания, модели связывания, модели пространства имен и различные механизмы пробразования. Современные СУБД, такие как SQL Server, Oracle, DB2, поддерживают анализ обработку и выгрузку XML-документов. XML был разработан в целях преодоления ограничений языка разметки HTML, а именно, для создания динамического наполнения и управления им. С помощью XML можно определить любое множество элементов, значения которых ассоциированы с данными. Иначе говоря, можно описать данные, структуры и методы для их обработки. Кроме того, XML позволяет связывать схемы, что дает возможность раздельно проверять достоверность данных и описывать их атрибуты и характеристики. Web 2.0 (определение Тима О’Рейли) — методика проектирования систем, которые путём учета сетевых взаимодействий становятся тем полнее(речь, как правило, идёт о наполнении информацией, однако вопросы её надёжности, достоверности, объективности не рассматриваются), чем больше людей ими пользуются. Особенностью веб 2.0. является принцип привлечения пользователей к наполнению и многократной выверке контента. Недостатки Веб 2.0 При использовании технологий web 2.0 вы становитесь арендатором сервиса и/или дискового пространства у какой-то сторонней компании. Возникающая при этом зависимость формирует ряд недостатков новых сервисов: зависимость сайтов от решений сторонних компаний, зависимость качества работы сервиса от качества работы многих других компаний; слабая приспособленность нынешней инфраструктуры к выполнению сложных вычислительных задач в браузере; уязвимость конфиденциальных данных, хранимых на сторонних серверах, для злоумышленников (известны случаи хищения личных данных пользователей, массовых взломов учётных записей блогов). Фактически сайт эпохи Веб 2.0 на первый взгляд интерактивен и дружелюбен, позволяет себя легко настраивать. Однако сбор статистики о пользователях, их предпочтениях и интересах, личной жизни, карьере, круге друзей могут помочь владельцу сайта манипулировать сообществом. По самым пессимистичным прогнозам многочисленные сайты Веб 2.0 вкупе с другими современными технологиями дают прообраз тоталитарной системы «Большого брата». Ви́ ки — веб-сайт, структуру и содержимое которого пользователи могут сообща изменять с помощью инструментов, предоставляемых самим сайтом. Особый язык разметки — так называемая вики-разметка, которая позволяет легко и быстро размечать в тексте структурные элементы и гиперссылки; форматировать и оформлять отдельные элементы. 22)Уязвимость веб-сайтов, виды сетевых атак и защита от них. Компания Qualys, специализирующаяся на безопасности, выпустила Open Source приложение Blind Elephant (Слепой Слон) главное назначение которого - анализ уязвимостей в веб-приложениях. Одной из основных проблем, которую призвана решить утилита, это точное определение установленных web-приложений и их версий, что порой сделать самому достаточно затруднительно. С помощью Blind Elephant было проанализировано более миллиона веб-сайтов, и была собрана следующая статистика по уязвимостям: уязвимы 91% сайтов с blog-движком Movable Type; уязвимы 92% сайтов с CMS Joomla!; уязвимы 95% сайтов с CMS MediaWiki; уязвимы 85% сайтов с веб-приложением PHPMyAdmin для управления СУБД MySQL; уязвимы 74% сайтов с CMS Moodle; уязвимы 70% сайтов с CMS Drupal; уязвимы 65% сайтов с SPIP; Самым небезопасным приложением в статистике оказался форумный движок phpBB - уязвимости были обнаружены на всех исследованных сайтах. Самым безопасным оказался движок для блогов WordPress - уязвимости были найдены только на 4% инсталляций. Принцип работы Blind Elephant заключается не в поиске уязвимостей как таковых, а подсчёте HASH (контрольных) сумм файлов, установленных на веб-сервере, и сравнение их с базой уже известных файлов. Сетевая атака — действие, целью которого является захват контроля (повышение прав) над удалённой/локальной вычислительной системой, либо её дестабилизация, либо отказ в обслуживании. Mailbombing Считается самым старым методом атак, хотя суть его проста и примитивна: большое количество почтовых сообщений делают невозможными работу с почтовыми ящиками, а иногда и с целыми почтовыми серверами. Для этой цели было разработано множество программ, и даже неопытный пользователь мог совершить атаку, указав всего лишь e-mail жертвы, текст сообщения, и количество необходимых сообщений. Многие такие программы позволяли прятать реальный IP-адрес отправителя, используя для рассылки анонимный почтовый сервер. Эту атаку сложно предотвратить, так как даже почтовые фильтры провайдеров не могут определить реального отправителя спама. Впрочем, большинство интернет-провайдеров имеют собственные системы защиты клиентов от мэйлбомбинга. Когда число одинаковых писем из одного и того же источника начинает превышать некие разумные пределы, вся поступающая корреспонденция такого рода просто уничтожается. Так что сегодня почтовых бомбардировок можно всерьез уже не опасаться. Переполнение буфера Один из самых распространенных типов атак в Интернете. Принцип данной атаки построен на использовании программных ошибок, позволяющих вызвать нарушение границ памяти и аварийно завершить приложение или выполнить произвольный бинарный код от имени пользователя, под которым работала уязвимая программа. Если программа работает под учётной записью администратора системы, то данная атака позволит получить полный контроль над компьютером жертвы, поэтому рекомендуется работать под учётной записью рядового пользователя, имеющего ограниченные права на системе, а под учётной записью администратора системы выполнять только операции, требующие административные права. IP-спуфинг Распространённый вид атаки в недостаточно защищённых сетях, когда злоумышленник выдаёт себя за санкционированного пользователя, находясь в самой организации, или за её пределами. Для этого крэкеру необходимо воспользоваться IPадресом, разрешённым в системе безопасности сети. Такая атака возможна, если система безопасности позволяет идентификацию пользователя только по IP-адресу и не требует дополнительных подтверждений. IP-спуфинг может быть реализован только при условии, что аутентификация пользователей происходит на базе IP-адресов. Поэтому криптошифрование аутентификации делает этот вид атак бесполезными. Впрочем, вместо криптошифрования с тем же успехом можно использовать случайным образом генерируемые одноразовые пароли. Инъекция Атака, связанная с различного рода инъекциями, подразумевает внедрение сторонних команд или данных в работающую систему с целью изменения хода работы системы, а в результате — получение доступа к закрытым функциям и информации, либо дестабилизации работы системы в целом. Наиболее популярна такая атака в сети Интернет, но также может быть проведена через командную строку системы. SQL-инъекция — атака, в ходе которой изменяются параметры SQL-запросов к базе данных. В результате запрос приобретает совершенно иной смысл, и в случае недостаточной фильтрации входных данных способен не только произвести вывод конфиденциальной информации, но и изменить/удалить данные. Очень часто такой вид атаки можно наблюдать на примере сайтов, которые используют параметры командной строки (в данном случае — переменные URL) для построения SQLзапросов к базам данных без соответствующей проверки. PHP-инъекция — один из способов взлома веб-сайтов, работающих на PHP. Он заключается в том, чтобы внедрить специально сформированный злонамеренный сценарий в код веб-приложения на серверной стороне сайта, что приводит к выполнению произвольных команд. Известно, что во многих распространённых в интернете бесплатных движках и форумах, работающих на PHP (чаще всего это устаревшие версии) есть непродуманные модули или отдельные конструкции с уязвимостями. Для обеспечения приемлемого уровня защиты от сетевых атак нужен firewall (брандмауэр). Это программа, которая контролирует все подключения извне, а также все попытки программ тайком выйти в Интернет. С помощью firewall можно контролировать буквально все программы, которые стремятся выйти в сеть. В режиме обучения брандмауэр станет спрашивать, кого пускать, а кого – нет.