Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ПСУБД ЛР №4 (2 часа)

.pdf
Скачиваний:
3
Добавлен:
18.02.2023
Размер:
518.69 Кб
Скачать

Методические указания для выполнения лабораторной работы №4

Тема: Введение в Cache Server Pages (CSP)

1 Теоретическая часть

1.1 Что это такое?

CSP – это технология создания динамических Web-приложений, а также средство быстрой разработки приложений и интеграции разнородных источников информации.

1.2Характеристики технологии

весь HTML-код генерирует сервер:

веб-сервер играет только роль канала связи;

рациональное использование вычислительных ресурсов;

базис для эффективной и простой масштабируемости;

теги позволяют осуществлять быструю разработку Web-приложений:

расширяемый набор тегов;

повторное использование кода;

готовая функция в одной строке (например, <CSP:SEARCH>);

каждая CSP-страница в Cache является отдельным классом:

полная интеграция с объектной моделью;

быстрое исполнение.

1.3Шлюз Web-сервера

Шлюз Web-сервера (Web Server Gateway, WSG) – это модуль Cache, который интегрируется с Web-сервером и занимается распределением запросов пользовательских браузеров к страницам CSP между серверами баз данных. Его можно установить отдельно.

1.4Работа с CSP-страницами

пользователь запрашивает страницу;

веб-сервер по расширению *.csp определяет, что обработку надо предоставить серверу Cache;

Cache запускает отдельную процедуру генерирования HTMLстраницы;

HTML-страница отсылается обратно пользователю через Web-сервер.

Помимо HTML-кода, CSP-файл содержит следующие элементы:

теги CSP;

выражения на ObjectScript;

блоки кода на ObjectScript или Cache Basic;

Браузер понимает только стандартный код HTML, который может включать функции JavaScript.

1.5 Создание CSP-страницы

CSP-страница может быть создана в любом редакторе для HTML, но достаточно и обычного текстового редактора, т.к. CSP-страница представляет собой обычный текстовый файл. Для редактирования CSP и HTML-страниц можно также использовать Cache Studio. Также Cache предлагает функционал мастера для создания CSP-форм. Для быстрого создания страницы достаточно выбрать имя класса и требуемые свойства.

1.6Компиляция CSP-страницы

ручная;

автоматическая.

Ручная компиляция из терминала:

NAMESPACE>Do $SYSTEM.CSP.LoadPage(«<dir>»,«ck»)

где <dir> - это виртуальный путь к файлу CSP, например,

/csp/samples/menu.csp, а

<ck> показывает, что страница будет компилироваться, и что она содержит отображаемую информацию.

Автоматическая компиляция:

1.7 CSP-классы без файлов CSP

Если созданы классы CLS, то они порождают HTML-страницы даже при отсутствии связанного с ними CSP-файла. Дочерние классы %CSP.Page – это специальные классы, которые наследуют методы и структуру, необходимые для генерации HTML-страниц. Такие «страницы» вызываются иначе: http://<webserver>/<applicationpath>/<packet.class>.cls,

например, http://localhost/csp/samples/csp.menu.cls.

1.8Доступность переменных

в рамках страницы, где они определены, переменные глобальны;

описанные внутри методов переменные локальны;

переменные, которые должны быть доступны во всём документе, объявляются в разделе HEAD;

задавая %session.Preserve=1, можно сделать так, чтобы переменные были доступны другим страницам.

1.9Выражения на Cache ObjectScript

#(<expression>)#

Где <expression> - это выражение ObjectScript, возвращающее значение

(цифровое или буквенно-цифровое). Вычисление производится при генерации страницы и значение внедряется в HTML.

##(<expression>)##

Поведение аналогично, однако вычисление производится на момент

компилирования.

Метод EscapeHTML() используется, если результат имеет специальные с точки зрения HTML символы (используется двухточечный синтаксис).

1.10 Язык ObjectScript в блоках кода

Для того, чтобы использовать в CSP странице ObjectScript язык, необходимо использовать следующий код:

<script language=”cache” runat=”[server|compiler]”> [ Caché Object Script Code ]

</script>

Где:

runat=”server” – блок обрабатывается на этапе просмотра CSPстраницы;

runat=”compiler” – блок обрабатывается при компиляции;

[ Caché Object Script Code ] – блок выражений на языке ObjectScript.

Логика данного скрипта может быть описана независимо и может влиять на вид HTML-страницы. (Выражения после “Write” отображаются на стандартном устройстве вывода – по умолчанию – браузер).

1.11 Контекст во время исполнения

Типичная последовательность создания CPS-страницы:

Пользователь подключается к нашему сайту и вызывает CSP-страницу;

%cspServer создает новый контекст и новый экземпляр объекта %session, который сохраняется вплоть до отключения;

Caché создает экземпляр объекта %request и сохраняет в нём все параметры вызова;

Теперь пользователь запрашивает другую страницу CSP;

Caché уничтожает объект %request старой страницы и создаёт новый экземпляр для новой страницы;

Процесс повторяется;

Пользователь уходит со страницы, или истекает время таймаута. Объект %session теряет данные, но остаётся в памяти;

Через некоторое время (“время отсрочки”) объект %session будет уничтожен и слот лицензии освободится.

Схематичное представление данной последовательности:

1.11Объект %request

Объект %request использует класс %CSP.Request. Он хранит параметры

текущей страницы, такие как: Переданные данные, URL, Название страницы.

Свойство Data объекта %request хранит имена и значения параметров, которые переданы в параметре URL, или поля формы. Данный объект создаётся на сервере и существует только на этапе генерации HTMLстраницы.

Доступные методы манипулирования данными:

IsDefined(“<variable”>);

Get(“<variable>”,<index>);

Set(“<variable>”,<index>);

1.12Объект %session

Объект %session использует класс %CSP.Session. Его основная цель –

хранить переменные и характеристики текущей сессии, такие как: EventClass,

Username, AppTimeout, Preserve, Data, SessionId. Объект %session всегда открыт и доступен на протяжении всей сессии. Он создаётся на сервере и позволяет хранить информацию в контексте сессии на всём её протяжении.

Некоторые события вызывают методы %CPS.SessionEvent, например:

OnSessionStart, OnSessionEnd, OnTimeout. Для их переопределения и использования необходимо определить новый дочерний класс, в котором свойству EventClass объекта %session будут сопоставлены новые методы.

1.13 Объект %response

Объект %response использует класс %CSP.Response. Он предназначен для управления HTTP-заголовками, передаваемыми в браузер. Для работы с данными этого объекта необходимо использовать метод OnPreHTTP().

Объект %response может сохранять и извлекать данные из Cookies, а его вызов может быть переадресован на другую страницу – серверная переадресация прозрачна для браузера.

1.14 Определение методов в CSP

<script language=”cache” method=”…” arguments=”…” returntype=”…”> [ Caché Object Script Code ]

</script>

Где:

method – имя метода;

arguments – список параметров: тип (через запятую);

returntype – тип данных результата;

[ Caché Object Script Code ] – блок выражений на языке ObjectScript.

Метод будет создан в классе, связанным со страницей, а также он

реализует расширенную функциональность.

1.15Гиперсобытия

Гиперсобытия позволяют вызывать методы Caché из HTML-форм.

Всего их существует 2 типа:

#server(<Метод Caché>)#

Аргумент должен быть именем метода Caché;

Методу можно передавать параметры со страницы или полученные из

URL;

Инструкция эквивалентна вызову JavaScript функции;

Использует Java апплет (cspbroker.jar);

Документ должен содержать тег HEAD.

#call(<Метод Caché>)#

Аналогичное поведение;

Для выполнения не требуется поддержка Java;

Синхронный вызов метода.

1.16 Использование SQL в блоках кода

Для того, чтобы использовать SQL необходимо написать следующее:

<script language=”SQL” name=”rset” p1=val1, …, pN=valN>

[SQL-code] </script>

Результатом выполнения запроса является объект класса %Library.ResultSet, который связан с переменной, имя которой определяется в параметре name (в данном случае rset).

p1, …, pN – параметры, передаваемые в SQL запрос, которые подставляются при его обработке вместо неизвестных значений (в данном случае это val1, …, valN).

Результирующая информация отформатирована подобно HTML.

2 Подсказки к индивидуальным заданиям

Задание 1

См. пункт 1.9 Для отображения системной даты и времени используйте

$zdt(<hdatetime>, <dformat>),

Где:

hdatetime – значение даты и времени.

dformat – форматирование даты (используйте в качестве параметра 4 – европейский формат).

Задание 2

См. пункт 1.8, 1.9

Необходимо заранее в области (в проводнике Cache куба) объявить глобал,

например: ^VisitCount=0

Для установки приращения счетчика используйте функцию

Set <var>=$Increment(<variable>,<num>),

Где

var – переменная, в которую запишется значение;

variable – переменная, значение которой необходимо увеличить;

num – (необязательный параметр) значение приращения.

Задание 3

См. пункт 1.11

Для того, чтобы получить значение из HTML формы, используйте

%request.Get(“<input-name>”, “<alt>”)

Где:

input-name – параметр “name” соответствующего HTML-тега;

alt – значение выводимое в случае, если параметр input-name пуст.

Задание 4

См. пункты 1.11, 1.12

Чтобы что-то пришло, в URL методом Get необходимо передать значения аргументов Name и Password

Пример: http://127.0.0.1:1972/csp/user/SESSION.CSP?Name=Olga&Password=qwerty

Для записи в объект сессии используйте set %session.Data(“<argument>”)=<value>,

Где:

argument – составной параметр, состоящий из ключевого слова session и параметр передаваемый в URL (например: “sessionKey”);

value – записываемое в сессию значение.

Для получения значения из сессии используйте

%session.Get("sessionKey")

Задание 5

См. пункт 1.15

Вызов метода из HTML формы происходит следующим образом:

<input type="button" name="btnSend" value="Send" onclick=#server(..SendEmail(self.form1.from.value, self.form1.to.value, self.form1.subject.value, self.form1.body.value))#>

3 Индивидуальные задания

Задание 1

Цель: разработать CSP-страницу, которая отображает дату и время последней компиляции страницы. Дополнительно реализуем вывод даты и времени на сервере в момент обращения к странице. Для отображения системной даты и времени используйте $ZDateTime($h,4).

Результат: CSP-страница, которая отображает дату и время в момент компиляции и в момент обращения к ней.

Задание 2

Цель: используя только выражения ObjectScript и блоки кода, создайте новую CSP-страницу, которая выводит счётчик обращений к странице, а также дату и время обращения к странице. Для хранения количества посещений используйте глобалы.

Результат: CSP-страница, отображающая количество обращений к странице, а также дату и время вызова страницы.

Задание 3

Цель: разработать CSP-страницу с именем RequestForm.csp, которая содержит тег <form> с двумя полями Name, Age, а также кнопкой Submit для передачи данных. Страница передаёт данные сама себе. Переданные данные отображаются в табличной форме.

Результат: CSP-страница, содержащая тег <form> и список введённых значений.

Задание 4

Цель: разработать две CSP-страницы. Одна страница через URL получает два аргумента - Name и Password. Затем, используя объект %request, извлекает значения этих аргументов и записывает их в объект %session.

Другая страница извлекает из объекта %session значения сессионных переменных и выводит их в браузере.

Результат: две CSP-страницы.

Задание 5

Цель: используя классы Cache из пакета %Net, необходимо реализовать метод CSP-страницы, который позволяет посылать сообщения по email. Для этого необходимо создать форму, которая содержит поля адреса получателя (поле To), отправителя (поле From), а также заголовок (поле Header) и тело сообщения (поле Body). На странице следует реализовать кнопку SEND, при нажатии на которую по гиперсобытию вызывается метод отправки сообщений, и ему в качестве аргументов передаются элементов формы To, From, Header, Body.

Результат: CSP-страница, с помощью которой можно отправлять сообщения по email.