Использование пакета Cold Fusion для MS Windows при построении WWW - интерфейсов к базам данных
Использование пакета Cold Fusion для MS Windows при построении WWW - интерфейсов к базам данных.
5.1Введение
5.2Установка Cold Fusion
5.3Администрирование Cold Fusion
5.4Взаимодействие Cold Fusion с базами данных
5.5Передача параметров в DBML - шаблон
5.6Занесение и модификация данных с использованием тегов DBINSERT и DBUPDATE
5.7Выполнение запросов к базам данных
5.8Использование результатов запроса для динамического создания HTML - документа
5.9Вывод результата выполнения запроса в виде таблицы
5.10Дополнительные замечания по созданию DBML - шаблонов
5.11Использование параметров и переменных в шаблонах
5.11.1Поля формы и параметры URL
5.11.2Переменные окружения CGI
5.11.3Применение тега DBSET для создания переменных
5.11.4HTTP Cookies
5.11.5Использование результатов выполнения запросов
5.12Проверка корректности данных и форматирование вывода
5.12.1Проверка корректности данных в полях формы
5.12.2Функции вывода в DBML
5.13Динамическое изменение содержимого документа
5.13.1Условный оператор (DBIF & DBELSE)
5.13.2Перенаправление на другой URL (DBLOCATION & DBABORT)
5.13.3Включение в шаблон других шаблонов
5.13.4Определение типа данных MIME для содержимого документа
5.14Расширенные возможности
5.14.1Динамическое определение SQL выражения
5.14.2Поддержка транзакций
5.14.3Вложенные области вывода и группирования
5.14.4Использование списочных полей с множественным выбором
5.14.5Дополнительные команды SQL
При подготовке данной главы отчета использовались материалы " Cold Fusion User Guide " (Руководство пользователя пакета Cold Fusion).
5.1 Введение
Пакет Cold Fusion фирмы Allaire - это средство для быстрой разработки интерактивных, динамических документов для Web основанное на обработке информации из баз данных, в основе которого лежит следующий набор технологий:
HTML (Hyper-Text Markup Language)
CGI (Common Gateway Interface)
SQL (Structured Query Language)
ODBC (Open Database Connectivity)
Разработка приложений с использованием Cold Fusion не требует программирования на таких языках как Perl, C/C++, Visual Basic или Delphi. Вместо этого вы создаете приложение, встраивая в обычный (стандартный) HTML файл специальные теги для работы с базами данных.
В данной главе рассматривается Cold Fusion версии 1.5 .
5.2 Установка Cold Fusion
Cold Fusion запускается как CGI приложение на различных Web-серверах под Windows NT и Windows 95 и должен быть совместим с любым сервером поддерживающим CGI.
Cold Fusion тестировался на совместимость со следующими серверами:
O'Reilly WebSite
Microsoft Internet Server
EMWAC HTTPS
Process Software Purveyor
Netscape Communications/Commerce Server
Internet Factory Communications/Commerce Builder
Spry Safety Web Server
CSM Alibaba
Для связи с различными СУБД Cold Fusion использует 32-разрядные ODBC - драйвера. Для корректной работы с Cold Fusion ODBC - драйвер должен удовлетворять следующим требованиям:
Это должен быть 32-разрядный драйвер.
Он должен поддерживать Уровень 1 ODBC API.
Должна поддерживаться базовая грамматика SQL.
Для совместимости с функциями ввода даты/времени, драйвер должен поддерживать соответствующие типы данных.
Для установки и использования Cold Fusion система должна удовлетворять следующим требованиям:
Операционная система Windows NT 3.51(или выше) или Windows 95.
Микропроцессор 80386 или выше; рекомендуется Pentium.
10Mb свободного дискового пространства.
24Mb RAM для Windows NT или 16Mb для Windows 95
Установленная сетевая поддержка TCP/IP.
Установленный WWW сервер.
Для установки Cold Fusion нужно запустить программу SETUP.EXE, которая должна находится на инсталляционном диске 1.
Помимо копирования файлов, необходимых для работы Cold Fusion, в процессе установки, в корневой директории с документами Web сервера создается директория с именем CFPRO. Эта директория содержит:
Тест, для проверки правильности установки системы.
Мини-учебник, в формате HTML, помогающий освоить азы Cold Fusion.
Примеры приложений, демонстрирующие различные способы использования Cold Fusion.
Чтобы проверить правильность установки Cold Fusion, нужно открыть документ, URL до которого имеет вид http://myserver/cfpro/getstart.htm, где myserver - имя или IP адрес вашего Web сервера.
5.3 Администрирование Cold Fusion
Для администрирования в Cold Fusion предусмотрен специальный интерфейс администратора. Этот интерфейс позволяет изменять различные параметры настройки Cold Fusion по четырем категориям:
Data Sources - используется для настройки источников данных ODBC, для использования их с Cold Fusion. Чтобы добавить источник данных, нужно нажать на кнопку "Add...", выбрать один из установленных в системе драйверов ODBC и задать определенные для него настройки. Переопределить эти настройки можно воспользовавшись кнопкой "Setup...", предварительно выделив конкретный источник данных. Если нужно определить способы взаимодействия Cold Fusion с источником данных, то нужно нажать на кнопку "Preferences..." и определить такие атрибуты как имя пользователя, пароль, допустимые операции с базой данных и др.
Templates - используется для настройки логических путей до директорий в которых расположены файлы с шаблонами Cold Fusion.
Debugging - используется для настройки отладочных сообщений и сообщений об ошибках.
Mail - используется для настройки параметров SMTP mail и позволяет просматривать журнал сообщений и ошибок.
5.4 Взаимодействие Cold Fusion с базами данных
Cold Fusion позволяет динамически генерировать HTML документы основанные на запросах пользователя. Эти запросы передаются в Cold Fusion CGI - скрипт (DBML.EXE), который пересылает данные в Cold Fusion Engine обрабатывающий эти данные в соответствии с заданным шаблоном, выполняя необходимые запросы и генерируя HTML документ, который отправляется пользователю.
Основой динамического создания документов являются специальные теги, входящие в язык разметки DBML, ориентированные на работу с базами данных. Почти все основные возможности Cold Fusion сосредоточены в четырех тегах:
DBQUERY - выполнение SQL - запроса к базе данных;
DBINSERT & DBUPDATE - создание и модификация записей в базе данных;
DBOUTPUT - отображение результата запроса, допускающее его произвольное размещение среди HTML - тегов.
Шаблон, на основе которого генерируется HTML - документ, представляет собой комбинацию тегов HTML и DBML:
HTML - теги используются для форматирования как постоянной части документа, так и результатов запросов. Например, можно определить полужирный шрифт для каждого поля и разделительные линии между записями.
DBML - теги используются для формирования запроса к базе данных, а также определяют где и как будут отображены результаты запросов.
На рисунке 5-1 показывается, как Cold Fusion обрабатывает запрос, полученный от клиента:
Рисунок 5-1
Когда пользователь нажимает кнопку типа "Submit" в форме или выбирает гипертекстную ссылку в документе, Web - браузер отправляет запрос на Web - сервер.
Web - сервер, если в запросе указан DBML - шаблон, запускает процесс Cold Fusion, отправляя ему данные полученные от клиента.
Cold Fusion принимает данные полученные от клиента обрабатывает теги DBML в шаблоне, включая подготовку запроса к базе данных и форматирование, которое будет использоваться в результирующем документе.
Cold Fusion взаимодействует с базой данных используя ODBC.
Cold Fusion динамически генерирует HTML - документ содержащий результат выполнения запросов к базе данных и возвращает его Web - серверу. Cold Fusion может также динамически генерировать почтовое сообщение и отправлять его через почтовый SMTP - сервер.
Web - сервер возвращает сгенерированный HTML - документ Web - клиенту.
5.5 Передача параметров в DBML-шаблон
Существует несколько способов передачи параметров между шаблонами. Можно передавать параметры непосредственно в URL, использовать для этого форму либо cookie.
Если параметры передаются через URL, то они добавляются к адресу вызываемого шаблона через символ "&" (амперсант) в виде параметр = значение. Например, гипертекстовая ссылка, приведенная ниже, отправляет параметр с именем 'user_id' и значением 5 в шаблон 'example.dbm':
При передаче параметров через форму используются поля формы, которые должны иметь имена, совпадающие с именами параметров, которые требуется передать. Ниже приведен пример передачи параметра, из предыдущего примера используя форму:
Заметим, что при обращении к CGI - программе DBML.EXE должен быть определен стандартный параметр Template, указывающий на конкретный шаблон.
Переменные, занесенные в cookie браузера и переменные окружения CGI доступны в любом шаблоне. Способы занесения информации в cookie описаны в п.5.11.
5.6 Занесение и модификация данных с использованием тегов DBINSERT и DBUPDATE
При использовании тегов DBINSERT и DBUPDATE для занесения или модификации данных, параметры должны быть переданы в шаблон обязательно из формы, используя метод POST.
Для создания новой записи в базе данных используется тег DBINSERT, а для модификации существующей записи используется тег DBUPDATE. При использовании этих тегов необходимо определить атрибуты DATASOURCE и TABLENAME. DATASOURCE это название источника данных ODBC, содержащего редактируемую таблицу, а TABLENAME - имя этой таблицы.
Например, если источник данных ODBC называется 'Person DB', а таблица, в которой требуется создать запись - 'Person', то тег DBINSERT в шаблоне будет иметь следующий вид:
Параметры, переданные в шаблон должны совпадать с именами полей таблицы, в которой создается (модифицируется) запись. В том случае, если не все передаваемые параметры должны участвовать в этой процедуре, используется атрибут FORMFIELDS, в котором через запятую перечисляются имена полей таблицы, для которых должны существовать одноименные параметры.
Особо следует отметить, что для того, чтобы использовать тег DBUPDATE для модификации записи, в таблице должен быть определен первичный ключ, а для всех полей включенных в первичный ключ из обрабатываемой HTML-формы обязательно должны быть переданы соответствующие параметры.
Теги DBINSERT и DBUPDATE могут иметь также еще два необязательных атрибута:
TABLEOWNER - для тех источников данных которые поддерживают права собственности на таблицы (например, SQL Server, Oracle и др.), этот атрибут можно использовать, чтобы указать собственника таблицы.
TABLEQUALIFIER - для различных источников данных этот атрибут может иметь разный смысл. Так, для SQL Server и Oracle - это имя базы данных, в которой содержится таблица, а для Intersolv dBase - это директория в которой расположены DBF файлы.
Пример
Пусть определена HTML - форма для ввода данных:
METHOD="POST">
ФИО :
Телефон :
Дата рождения :
Следующий шаблон, example.dbm, которому будут переданы данные из формы создает запись в таблице и выдает подтверждающее сообщение:
FORMFIELDS="FullName,Phone,Birthday">
Запись создана!
5.7 Выполнение запросов к базам данных
Для выполнения запросов к базе данных используется тег DBQUERY. Этот тег имеет следующий синтаксис:
DATASOURCE="имя источника данных odbc"
SQL="sql выражение" TIMEOUT=n MAXROWS=n DEBUG>
Атрибут NAME определяет имя запроса, которое используется далее для отображения результата выполнения запроса. Имя запроса должно начинаться с буквы и может содержать буквы и цифры (пробелов быть не должно).
Атрибут DATASOURCE задает имя источника данных ODBC, который должен быть создан с помощью интерфейса администратора Cold Fusion.
Ключевым атрибутом тега DBQUERY, является атрибут SQL, который собственно и определяет запрос к базе данных на языке SQL (для улучшения читабельности, допускается расположение значения атрибута SQL на нескольких строках).
Создавая SQL запрос, следует помнить, что конкретная база данных может иметь свои особенности в синтаксисе SQL, использование которых ограничивается этой базой данных. Чтобы проверить, является ли конкретное SQL выражение совместимым с ODBC и независимым от конкретной базы данных, лучше всего использовать Microsoft Query, входящий в состав Microsoft Office. Для этого нужно в меню Microsoft Query выбрать "Файл/Выполнить SQL", в появившемся окне диалога ввести предложение SQL, выбрать источник данных ODBC, нажав на кнопку "Источники...", после чего нажать на кнопку "Выполнить". Этот продукт можно также использовать и для создания SQL - выражений, используя для этого визуальные средства создания запросов. Получить SQL - выражение созданного таким образом запроса можно нажав на кнопку "SQL" в панели инструментов.
Атрибут MAXROWS является необязательным и определяет максимальное количество записей, которые могут быть возвращены в результате выполнения запроса.
Атрибут TIMEOUT также является необязательным и определяет максимальное количество миллисекунд для выполнения запроса, до выдачи сообщения об ошибке. Заметим, что этот атрибут поддерживается только некоторыми ODBC - драйверами (например, драйвером для MS SQL Server 6.0).
Атрибут DEBUG используется для отладки запросов. При наличии этого атрибута пользователю отправляется дополнительная информация о выполнении этого запроса, такая как текст выполненного SQL - запроса, число возвращенных записей и др.
Приведем пример запроса с именем 'AllPersons', который возвращает все записи таблицы 'Persons' из базы данных, с которой связан источник данных ODBC с именем 'Person DB':
SQL="select * from Persons">
Для динамической настройки SQL - выражения можно использовать параметры, переданные в шаблон. Это могут быть параметры, переданные из формы, URL, а также переменные CGI. Параметры, используемые внутри SQL - выражения, должны быть обрамлены символом "#" (например #Name#). При обработке запроса Cold Fusion ищет параметр с таким именем среди параметров, полученных из формы, в URL или среди переменных CGI. При нахождении подходящего параметра его значение подставляется вместо соответствующей ссылки на параметр.
Примеры использования параметров в SQL -выражении
Пример 1
Предположим что обрабатывается URL
"/cgi-shl/dbml.exe?Template=prs.dbm&Id=22",
а атрибут SQL в DBQUERY имеет вид
SQL="select * from Persons where Id = #Id#",
тогда в базу данных будет передано следующее SQL - выражение:
select * from Persons where Id = 22 .
Пример 2
Предположим, что в шаблон передан параметр FirstLetters и нужно найти в таблице Persons записи, в которых первые буквы в поле FullName совпадают со значением этого параметра. Значение атрибута SQL в этом случае будет следующим:
SQL="select * from Persons
where FullName like '#FirstLetters#%'"
Следует обратить внимание на то, что маска, состоящая из параметра и символа '%', в отличие от предыдущего примера, обрамлена одинарными кавычками. Это связано с тем, что поле Id из примера 1 имеет числовой тип, а поле FullName - текстовый тип (синтаксис SQL требует, чтобы текстовые значения всегда были обрамлены одинарными кавычками).
Для того чтобы задать маску, в примере использовался символ '%', который в SQL - запросах соответствует произвольной последовательности символов. Также для определения маски может использоваться символ '_' (подчерк), соответствующий одному произвольному символу.
5.8 Использование результатов запроса для динамического создания HTML - документа
Для вывода данных возвращаемых в результате выполнения запроса определенного в DBQUERY применяется тег DBOUTPUT. Внутри этого тега, связанного с конкретным запросом, может находиться обычный текст, теги HTML, ссылки на поля определенные в запросе. При обработке шаблона, содержимое тега DBOUTPUT отправляется клиенту для каждой записи, возвращаемой в результате выполнения запроса, с подстановкой соответствующих значений параметров и полей.
Тег DBOUTPUT имеет следующий синтаксис:
Текст, теги HTML,
ссылки на поля и параметры (т.е. #Name#)
Атрибут QUERY применяется для указания имени запроса DBQUERY, результат выполнения которого будет использоваться, а атрибут MAXROWS определяет максимальное количество записей этого запроса, которые будут переданы для вывода в тег DBOUTPUT.
Пример
Для вывода результата выполнения запроса с именем 'AllPersons', отображая имя персоны и телефон, и разделяя записи горизонтальной линией, может использоваться следующая конструкция:
#FullName# (Телефон: #Phone# )
Результат обработки этого тега будет иметь вид:
Иванов Иван Иванович (Телефон: 222-22-22 )
Петров Петр Петрович (Телефон: 444-44-44 )
5.9 Вывод результата выполнения запроса в виде таблицы
Теги DBTABLE и DBCOL всегда употребляются вместе для отображения результата выполнения запроса в виде таблицы.
Атрибуты тега DBTABLE:
QUERY
- имя DBQUERY, для которого нужно отобразить данные;
MAXROWS
- максимальное количество записей, которое может быть отображено в таблице;
COLSPACING
- количество пробелов, которые будут вставлены между колонками (по умолчанию 2);
HEADERLINES
- количество строк, которые будут отведены для заголовка (по умолчанию 2);
HTMLTABLE
- при наличие этого тега результат запроса будет отображен в виде HTML - таблицы, в противном случае будет использован тег HTML .
BORDER
- используетя только вместе с атрибутом HTMLTABLE для отображения рамки в таблице.
Атрибуты тега DBTABLE:
HEADER
- текст, который будет выводиться как заголовок колонки;
WIDTH
- ширина колонки в символах (по умолчанию 20);
ALIGN
-выравнивание содержимого колонки (LEFT, RIGHT и CENTER);
TEXT
-заключенный в кавычки текст, определяющий содержимое колонки, в котором могут находиться те же теги, ссылки на параметры и др., что и в теге DBOUTPUT.
Приведем пример использования тегов DBTABLE и DBCOL:
<DBCOL HEADER="Фамилия Имя Отчество" WIDTH="30" TEXT="#FullName#">
5.10 Дополнительные замечания по созданию DBML - шаблонов
В шаблонах DBML, для комментариев, используется три тире (
Нравится материал? Поддержи автора!
Ещё документы из категории информатика:
Чтобы скачать документ, порекомендуйте, пожалуйста, его своим друзьям в любой соц. сети.
После чего кнопка «СКАЧАТЬ» станет доступной!
Кнопочки находятся чуть ниже. Спасибо!
Кнопки:
Скачать документ