4. Аргументы командной строки
СGI-модуль в командной строке от сервера получает:
остаток URL после имени cgi-модуля в качестве первого параметра (первый параметр будет пуст, если присутствовало только имя cgi-модуля);
список ключевых слов в качестве остатка командной строки для скрипта поиска, или чередующиеся имена полей формы с добавленным знаком равенства и соответствующих значений переменных.
Ключевые слова, имена и значения полей формы передаются декодированными (из HTTP-URL формата кодирования) и перекодированными в соответствии с правилами кодирования Bourne shell [12] так, что cgi-модуль в командной строке получит информацию без необходимости осуществлять дополнительные преобразования (рассматривается реализация на Unix-платформе).
Исходя из разницы методов запросов GET и POST, можно определить последовательность действий для обработки входных данных cgi-модуля для разных типов запросов.
I. Для метода GET
Получить значение переменной QUERY_STRING;
Декодировать имена и их значения (учитывая, что все пробелы при декодировании сервером были заменены символом "+" и все символы с десятичным кодом больше 128 преобразованы в символ "%" и следующим за ним шестнадцатеричным кодом символа.);
Сформировать структуру соответствия "имя - значение" для дальнейшего использования в cgi-модуле.
II. Для метода POST
Получить из стандартного входного потока CONTENT_LENGTH символов;
Декодировать имена и их значения (учитывая, что все пробелы при декодировании сервером были заменены символом "+" и все символы с десятичным кодом больше 128 преобразованы в символ "%" и следующим за ним шестнадцатеричным кодом символа.);
Сформировать структуру соответствия "имя-значение" для дальнейшего использования в cgi-модуле.
После формирования структуры "имя-значение" можно приступить к решению задач, ради которых, собственно, создавался cgi-модуль. Следующим важным моментом является динамическое формирование cgi-модулем HTML-документа (оформление результата работы модуля). Например, таблицы выборки из базы данных.
Для этого cgi-модуль должен выдать в стандартный выходной поток заголовок, состоящий из строки:
Content-type: text/html и пустой строки (двух символов CR).
После этого заголовка можно выдавать любой текст в формате HTML.
Как уже говорилось ранее, CGI-скрипт играет роль посредника между Web-сервером и другими видами серверов, в частности с сервером баз данных. В качестве языка CGI-скриптов часто выступает язык Perl [11] (Practical Extraction and Report Language)- интерпретируемый язык, приспособленный для обработки произвольных текстовых файлов, извлечения из них необходимой информации и выдачи сообщений. Здесь будет освящен вопрос доступа к базе данных Oracle из языка perl.
Это возможно благодаря наличию в свободно-доступной библиотеке Perl-модулей (доступна на http://www.perl.com/CPAN/) пакетов для работы с базами данных: DBI и DBD-Oracle. DBI представляет собой абстрагированный от конкретного SQL-сервера интерфейс-надстройку над интерфейсом DBD-xxxx, который закреплен за конкретным SQL-сервером.
Ниже приводятся описание некоторых функций из пакета DBI:
$dbh = DBI->connect('dbi:Oracle:'.'db_alias', 'db_user', 'db_pwd', {RaiseError => 1});
$dbh->{RaiseError} = 1; # do this, or check every call for errors
- установка соединения с базой данных Oracle
$cursor = $dbh->prepare("SELECT Fie1d, Field2 FROM Table1 ORDER BY Field2");
$cursor->execute;
while (@row = $cursor->fetchrow_array) {
print "$row[0], $row[1] \n";
}
- выполнение запроса к базе данных (значения полей Field1, Filed2 помещаются в массив @row)
my($Field1, $Field2, $Field3);
$cursor = $dbh->prepare("SELECT Field1, Field2, Field3 FROM Table1");
$cursor->bind_columns(undef, \($Field1, $Field2, $Field3));
$cursor->execute;
while $cursor->fetch) {
print "$Field1, $Field2, $Field3 \n";
}
- выполнение запроса к базе данных (значения полей Field1, Field2, Field3 помещаются в переменные $Field1, $Field2, $Field3)
$rc = $cursor->finish;
$rc = $dbh->disconnect;
- закрытие курсора и отсоединение от базы данных.
Рассмотрим реализацию, базирующуюся на Web-сервере Apache для Unix-систем. Для того чтобы Web-сервер мог выполнять CGI-скрипты, написанные на языке perl, файл с perl-программой должен иметь атрибут ⌠исполняемый■. Если файлы с программой расположены в каталоге, отличном от каталога, прописанного в директиве ScriptAlias (обычно cgi-bin) файла конфигурации Web-сервера srm.conf, то дополнительно необходимо создать строку, вида
AddHandler cgi-script .cgi
в файле srm.conf (предполагается, что файлы будут иметь расширение .cgi). После внесения любых изменений в файлы конфигурации Web-сервера, его необходимо перезапустить командой
$ Apache_HOME/sbin/apachectl restart
где Apache_HOME √ каталог, где расположен Web-сервер.
Первой строкой perl-программы должна быть строка, вида
#!/usr/local/bin/perl
задающая путь до интерпретатора языка perl в системе.
... Java, JavaScript и встроенные в сервер средства LiveConnect. Более мощными реляционными возможностями доступа к базе данных и более эффективным выполнением виртуальной Java-машины будут расширены услуги разработки приложений, обеспечиваемых в Enterprise Server 2.0,. Сервис управления. В дополнение к использованию встроенной машины каталога LDAP Enterprise Server 2.0 будет управляем через общие ...
... данных означает, что в распределенной системе могут мирно сосуществовать СУБД различных производителей, и возможны операции поиска и обновления в базах данных различных моделей и форматов. распределённая база данные компьютерный 3 Проблемы распределенных баз данных Исходя из определения Дэйта, распределенную базу данных в общем случае можно рассматривать как слабосвязанную сетевую структуру, ...
... на будущее. DAO и RDO известны уже достаточно давно, и появление двух разных механизмов было связано с необходимостью оптимизации решения двух отдельных задач: доступа к локальным и удаленным базам данных соответственно. Однако естественное развитие вычислительных систем привело к необходимости создания единого механизма, который обеспечил бы единый подход при работе с БД различных классов. В ...
... числе на промышленных предприятиях, больше подходят клиент-серверные СУБД. Мы рассмотрим особенности таких распространенных СУБД, как Oracle и MS SQL Server. Глава 4. Язык SQL в системах управления базами данных SQL (англ. Structured Query Language — язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных ...
0 комментариев